在Winform框架界面中改变并存储界面皮肤样式

在本篇介绍的Winform界面样式改变及存储操做中,是指基于DevExpress进行界面样式的变化。通常状况下,默认咱们会为客户提供多种DevExpress的界面皮肤以供我的喜爱选择,默认DevExpress提供40余种皮肤样式,用户能够根据本身的喜爱,选择较为美观、得体的皮肤,为了方便,咱们对用户的皮肤选择进行记录,并能够动态改变。框架

一、界面皮肤的选择

Winform开发框架(包括混合式Winform开发框架)皮肤以下界面所示。函数

在皮肤集合中打开,能够看到不少界面皮肤可供选择this

上面初始化的皮肤代码,是经过调用SkinHelper的DevExpress内在辅助类实现的,经过添加一个RibbonGalleryBarItem控件对象,而后添加以下代码实现的spa

DevExpress.XtraBars.Helpers.SkinHelper.InitSkinGallery(rgbiSkins, true);

以及在Ribbon控件上添加一个小的皮肤下拉按钮,以下代码所示code

this.ribbonControl.Toolbar.ItemLinks.Clear();
this.ribbonControl.Toolbar.ItemLinks.Add(rgbiSkins);

若是咱们固定设置界面一种皮肤,那么调用下面的代码直接设置便可,以下所示。orm

UserLookAndFeel.Default.SetSkinStyle("Office 2010 Blue");

 

二、界面皮肤的保存和显示

不过,咱们若是但愿皮肤能够随意更改并能够存储到配置文件中,那么咱们就须要对它进行必定的加工处理。对象

首先咱们编写一个设置皮肤名称的函数,以下所示。blog

        /// <summary>
        /// 设置用户界面的皮肤
        /// </summary>
        private void SetSkinStyle()
        {
            //从配置文件读取SkinName的值,如无则使用标准样式
            string skinName = config.AppConfigGet("SkinName");
            skinName = string.IsNullOrEmpty(skinName) ? "Office 2010 Blue" : skinName;

            foreach (GalleryItemGroup group in rgbiSkins.Gallery.Groups)
            {
                foreach (GalleryItem item in group.Items)
                {
                    if (string.Concat(item.Tag) == skinName)
                    {
                        item.Checked = true;
                        rgbiSkins.Gallery.MakeVisible(item);
                        UserLookAndFeel.Default.SetSkinStyle(skinName);
                        return;
                    }
                    item.Checked = false;
                }
            }
        }

这样咱们在皮肤改变后,从新读取配置,并从新设置界面的皮肤便可。事件

那么咱们须要实现RibbonGalleryBarItem控件对象的单击事件GalleryItemClick,以下代码所示。开发

            rgbiSkins.GalleryItemClick += (object sender, GalleryItemClickEventArgs e) =>
            {
                config.AppConfigSet("SkinName", string.Concat(e.Item.Tag));
                SetSkinStyle();
            };

这样综合起来就是两个函数代码实现了,以下所示

        /// <summary>
        /// 初始化皮肤设置
        /// </summary>
        private void InitSkinStyle()
        {
            //初始化皮肤样式名称
            DevExpress.XtraBars.Helpers.SkinHelper.InitSkinGallery(rgbiSkins, true);
            rgbiSkins.GalleryItemClick += (object sender, GalleryItemClickEventArgs e) =>
            {
                config.AppConfigSet("SkinName", string.Concat(e.Item.Tag));
                SetSkinStyle();
            };
            this.ribbonControl.Toolbar.ItemLinks.Clear();
            this.ribbonControl.Toolbar.ItemLinks.Add(rgbiSkins);
            this.ribbonControl.Minimized = true;//默认最小化
            //UserLookAndFeel.Default.SetSkinStyle("Office 2010 Blue");
            SetSkinStyle();
        }

        /// <summary>
        /// 设置用户界面的皮肤
        /// </summary>
        private void SetSkinStyle()
        {
            //从配置文件读取SkinName的值,如无则使用标准样式
            string skinName = config.AppConfigGet("SkinName");
            skinName = string.IsNullOrEmpty(skinName) ? "Office 2010 Blue" : skinName;

            foreach (GalleryItemGroup group in rgbiSkins.Gallery.Groups)
            {
                foreach (GalleryItem item in group.Items)
                {
                    if (string.Concat(item.Tag) == skinName)
                    {
                        item.Checked = true;
                        rgbiSkins.Gallery.MakeVisible(item);
                        UserLookAndFeel.Default.SetSkinStyle(skinName);
                        return;
                    }
                    item.Checked = false;
                }
            }
        }

而后在主界面的初始化代码中进行调用便可,同时记得在App.Config文件中增长一个SkinName的配置项,方便程序进行存储皮肤名称。

这样就能够实现咱们皮肤的变化及存储功能了,修改皮肤,并重启程序,系统依旧使用保存好的皮肤,功能符合预期。

 

这个功能不算复杂,提供代码方便你们进行复制使用。 

相关文章
相关标签/搜索