在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的配置項,方便程序進行存儲皮膚名稱。

這樣就能夠實現咱們皮膚的變化及存儲功能了,修改皮膚,並重啓程序,系統依舊使用保存好的皮膚,功能符合預期。

 

這個功能不算複雜,提供代碼方便你們進行復制使用。 

相關文章
相關標籤/搜索