• Devexpress -换皮肤


    一、在项目下新建RibbonForm  命名为:useSkin

    二、添加引用DevExpress.OfficeSkins
          DevExpress.UserSkins.BonusSkins

    三、将ribbonPage1的Text属性设置为:皮肤

          ribbonPageGroup1的Text属性设置为:更换皮肤

          在ribbonPageGroup1下新建个ribbonGalleryBarItem1,将其Caption的属性设置为:请选择您喜欢的皮肤,并添GalleryItemClick    事件:ribbonGalleryBarItem1_GalleryItemClick

    四、在应用程序的主入口里添加:

    static void Main()
            {
                //皮肤
                DevExpress.UserSkins.OfficeSkins.Register();
                DevExpress.UserSkins.BonusSkins.Register();
                DevExpress.Skins.SkinManager.EnableFormSkins();
    
                Application.EnableVisualStyles();
                Application.SetCompatibleTextRenderingDefault(false);
                Application.Run(new Exercises.useSkin());
            }

    五、添加命名空间using System.Xml;

    在事件ribbonGalleryBarItem1_Click里添加代码:

    private void ribbonGalleryBarItem1_Click(object sender, DevExpress.XtraBars.Ribbon.GalleryItemClickEventArgs e)
            {
                string name = string.Empty;
                string caption = string.Empty;
                if (ribbonGalleryBarItem1.Gallery == null) return;
                caption = ribbonGalleryBarItem1.Gallery.GetCheckedItems()[0].Caption;//主题的描述
                caption = caption.Replace("主题:", "");
                //name = bsiPaintStyle.Manager.PressedLink.Item.Tag.ToString();//主题的名称
                ribbonGalleryBarItem1.Caption = "主题:" + caption;
    
                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");
                //XtraMessageBox.Show("您选择了主题:" + caption);
            }
    

      

    添加命名空间

    using DevExpress.XtraBars.Helpers;
    using DevExpress.LookAndFeel;

    六、添加命名空间using DevExpress.XtraEditors;

    在Load下添加代码:

    public string defaultSkinName;//皮肤
            private void useSkin_Load(object sender, EventArgs e)
            {
                SkinHelper.InitSkinGallery(ribbonGalleryBarItem1);
                CheckFile();//检查文件
                GetXmlSkin();//获取xml主题
                UserLookAndFeel.Default.SetSkinStyle(defaultSkinName);//设置主题样式
                ribbonGalleryBarItem1.Caption = "主题:" + defaultSkinName;
            }
    
            #region 检查XML文件是否存在
            public void CheckFile()
            {
                try
                {
                    if (System.IO.File.Exists("SkinInfo.xml") == false)
                    {
                        //XtraMessageBox.Show("不存在XML");
                        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("SetSkin");
                XmlElement rootone = doc.CreateElement("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
    

      

    好了,现在就可以为自己的窗体选择喜欢的皮肤了。

    看一下效果吧。。。。

         

  • 相关阅读:
    HRESULT:0x80070057 (E_INVALIDARG)的异常的解决方案
    c# 取两个时间的间隔
    [转]C#算法
    智能仓库管理系统方案(四)
    分页存储过程
    ASP.NET2.0_多语言本地化应用程序(转)
    C#绘图双缓冲技术总结(转)
    C#.net同步异步SOCKET通讯和多线程总结(转)
    WIN2003 sp2中Delphi 7中的Project菜单中Options菜单打不开
    C#关于日期月天数和一年有多少周及某年某周时间段的计算
  • 原文地址:https://www.cnblogs.com/yt954437595/p/5652921.html
Copyright © 2020-2023  润新知