最开始接触到这个东西呢,是大神自己事先做好一部分程序,然后拿给我继续添加功能的,当时一看到这整个界面,我就懵了。从来没有接触过,连基本的用法都不知道。生生鼓捣了一下午才算是知道怎么添加控件了。经过这些天的接触呢,发现这个确实是个好东西,它所做出来的界面真真是比VS控件界面好看了许多啊,也显得更专业。
首先呢,给大家介绍一下DevExpress.
DevExpress是 Developer Express的缩写,DevExpress是一家全球知名的控件开发公司,也特指此公司出品的控件集合或某系列控件或其中某控件。主要的开发平台呢有三个:VCL(Borland Delphi /C++ Builder)、.NET(Microsoft Visual Studio我最主要学习的是在.NET中的使用)和COM/ActiveX Controls。
不仅功能丰富,应用简便,而且界面华丽,更可方便定制。对于编程人员来说是个不错的选择。它的菜单栏控件完全可以替代开发环境。它还提供完善的帮助系统,资料详尽,可以快速入手。有些高级控件更是零代码的,非常易于使用。
接下来,就是今天的主题了DevExpress界面换肤.
方法一、直接在设计程序界面时添加DefaultLookAndFeel控件,在其属性SkinName中便可设置
方法二、代码实现。(拖动控件呢,虽也可设计界面,但毕竟是在后台,如何在程序运行之后进行换肤呢?)
1. 添加引用:
2. 在菜单栏下新建一个ribbonGalleryBarItem,并添加GalleryItemClick 事件:ribbonGalleryBarItem1_GalleryItemClick
3. 在应用程序的主入口里添加(也可不用添加,直接拖动一个DefaultLookAndFeel控件):
static void Main()
{
DevExpress.UserSkins.BonusSkins.Register();
DevExpress.Skins.SkinManager.EnableFormSkins();
DevExpress.Skins.SkinManager.EnableMdiFormSkins();
Application.EnableVisualStyles();
Application.SetCompatibleTextRenderingDefault(false);
Application.Run(new Form1());
}
4. 在
ribbonGalleryBarItem1_GalleryItemClick事件中添加代码:
string caption = string.Empty;
if (ribbonGalleryBarItem1.Gallery == null) return;
caption = ribbonGalleryBarItem1.Gallery.GetCheckedItems()[0].Tag.ToString();//获取真实的名称,没有汉化的
caption = caption.Replace("主题:", "");
XmlDocument doc = new XmlDocument();
doc.Load("SkinInfo.xml");
XmlNodeList nodelist = doc.SelectSingleNode("SetSkin").ChildNodes;
foreach (XmlNode node in nodelist)
{
XmlElement xe = (XmlElement)node;//将子节点类型转换为XmlElement类型
if (xe.Name == "Skinstring")
{
xe.InnerText = caption;
}
}
doc.Save("SkinInfo.xml");
5.
在form_load函数中添加如下代码
SkinHelper.InitSkinGallery(ribbonGalleryBarItem1);
CheckFile();//检查文件
GetXmlSkin();//获取xml主题
UserLookAndFeel.Default.SetSkinStyle(defaultSkinName);//设置主题样式
ribbonGalleryBarItem1.Caption = "主题:" + defaultSkinName;
6. 在函数中添加以下代码:
public string defaultSkinName;//皮肤
#region 检查XML文件是否存在
public void CheckFile()
{
try
{
if (System.IO.File.Exists("SkinInfo.xml") == false)
{
CreateXml();
}
}
catch (Exception ex)
{
XtraMessageBox.Show(ex.ToString(), "Error", MessageBoxButtons.OK, MessageBoxIcon.Error);
}
}
#region 创建XML文件
public void CreateXml()
{
XmlDocument doc = new XmlDocument();//建立xml定义声明
XmlDeclaration dec = doc.CreateXmlDeclaration("1.0", "utf-8", null);
doc.AppendChild(dec);//创建根节点
XmlElement root = doc.createElement_x("SetSkin");
XmlElement rootone = doc.createElement_x("Skinstring");//皮肤
//将one,two,插入到root节点下
doc.AppendChild(root);
root.AppendChild(rootone);
doc.Save("SkinInfo.xml");
}
#endregion
#region 读取Xml节点内容
public void GetXmlSkin()
{
try
{
XmlDocument mydoc = new XmlDocument();
mydoc.Load("SkinInfo.xml");
XmlNode ressNode = mydoc.SelectSingleNode("SetSkin");
defaultSkinName=ressNode.SelectSingleNode("Skinstring").InnerText;
}
catch (Exception ex)
{
XtraMessageBox.Show(ex.ToString(), "Error", MessageBoxButtons.OK, MessageBoxIcon.Error);
}
}
#endregion
#endregion
7. 效果如下:
单击图中图标即可更改界面主题风格
主题只显示vsoffice等主题不全的问题(参考以上)
主要部分