DevExpress--换肤

最开始接触到这个东西呢,是大神自己事先做好一部分程序,然后拿给我继续添加功能的,当时一看到这整个界面,我就懵了。从来没有接触过,连基本的用法都不知道。生生鼓捣了一下午才算是知道怎么添加控件了。经过这些天的接触呢,发现这个确实是个好东西,它所做出来的界面真真是比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等主题不全的问题(参考以上)

主要部分

Guess you like

Origin blog.csdn.net/caoyanchao1/article/details/121573169