在Winform框架界面中改變并存儲界面皮膚樣式

在本篇介紹的Winform界面樣式改變及存儲操作中,是指基于DevExpress進行界面樣式的變化悼沿。一般情況下,默認我們會為客戶提供多種DevExpress的界面皮膚以供個人喜好選擇,默認DevExpress提供40余種皮膚樣式,用戶可以根據(jù)自己的喜好蓖康,選擇較為美觀、得體的皮膚垒手,為了方便蒜焊,我們對用戶的皮膚選擇進行記錄,并可以動態(tài)改變科贬。

1泳梆、界面皮膚的選擇

Winform開發(fā)框架(包括混合式Winform開發(fā)框架)皮膚如下界面所示。



在皮膚集合中打開,可以看到很多界面皮膚可供選擇



上面初始化的皮膚代碼优妙,是通過調(diào)用SkinHelper的DevExpress內(nèi)在輔助類實現(xiàn)的乘综,通過添加一個RibbonGalleryBarItem控件對象,然后添加如下代碼實現(xiàn)的
DevExpress.XtraBars.Helpers.SkinHelper.InitSkinGallery(rgbiSkins, true);

以及在Ribbon控件上添加一個小的皮膚下拉按鈕鳞溉,如下代碼所示

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

如果我們固定設(shè)置界面一種皮膚瘾带,那么調(diào)用下面的代碼直接設(shè)置即可,如下所示熟菲。

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

2看政、界面皮膚的保存和顯示

不過,我們?nèi)绻Mつw可以隨意更改并可以存儲到配置文件中抄罕,那么我們就需要對它進行一定的加工處理允蚣。

首先我們編寫一個設(shè)置皮膚名稱的函數(shù),如下所示呆贿。

/// <summary>
/// 設(shè)置用戶界面的皮膚
/// </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;
        }
    }
}

這樣我們在皮膚改變后,重新讀取配置做入,并重新設(shè)置界面的皮膚即可冒晰。

那么我們需要實現(xiàn)RibbonGalleryBarItem控件對象的單擊事件GalleryItemClick,如下代碼所示竟块。

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

這樣綜合起來就是兩個函數(shù)代碼實現(xiàn)了壶运,如下所示

/// <summary>
/// 初始化皮膚設(shè)置
/// </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>
/// 設(shè)置用戶界面的皮膚
/// </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;
        }
    }
}

然后在主界面的初始化代碼中進行調(diào)用即可浪秘,同時記得在App.Config文件中增加一個SkinName的配置項蒋情,方便程序進行存儲皮膚名稱。



這樣就可以實現(xiàn)我們皮膚的變化及存儲功能了耸携,修改皮膚棵癣,并重啟程序,系統(tǒng)依舊使用保存好的皮膚夺衍,功能符合預期狈谊。



這個功能不算復雜,提供代碼方便大家進行復制使用沟沙。
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末的畴,一起剝皮案震驚了整個濱河市,隨后出現(xiàn)的幾起案子尝胆,更是在濱河造成了極大的恐慌,老刑警劉巖护桦,帶你破解...
    沈念sama閱讀 211,884評論 6 492
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件含衔,死亡現(xiàn)場離奇詭異,居然都是意外死亡,警方通過查閱死者的電腦和手機贪染,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 90,347評論 3 385
  • 文/潘曉璐 我一進店門缓呛,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人杭隙,你說我怎么就攤上這事哟绊。” “怎么了痰憎?”我有些...
    開封第一講書人閱讀 157,435評論 0 348
  • 文/不壞的土叔 我叫張陵票髓,是天一觀的道長。 經(jīng)常有香客問我铣耘,道長洽沟,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 56,509評論 1 284
  • 正文 為了忘掉前任蜗细,我火速辦了婚禮裆操,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘炉媒。我一直安慰自己踪区,他們只是感情好,可當我...
    茶點故事閱讀 65,611評論 6 386
  • 文/花漫 我一把揭開白布吊骤。 她就那樣靜靜地躺著缎岗,像睡著了一般。 火紅的嫁衣襯著肌膚如雪水援。 梳的紋絲不亂的頭發(fā)上密强,一...
    開封第一講書人閱讀 49,837評論 1 290
  • 那天,我揣著相機與錄音蜗元,去河邊找鬼或渤。 笑死,一個胖子當著我的面吹牛奕扣,可吹牛的內(nèi)容都是我干的薪鹦。 我是一名探鬼主播,決...
    沈念sama閱讀 38,987評論 3 408
  • 文/蒼蘭香墨 我猛地睜開眼惯豆,長吁一口氣:“原來是場噩夢啊……” “哼池磁!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起楷兽,我...
    開封第一講書人閱讀 37,730評論 0 267
  • 序言:老撾萬榮一對情侶失蹤地熄,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后芯杀,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體端考,經(jīng)...
    沈念sama閱讀 44,194評論 1 303
  • 正文 獨居荒郊野嶺守林人離奇死亡雅潭,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 36,525評論 2 327
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現(xiàn)自己被綠了却特。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片扶供。...
    茶點故事閱讀 38,664評論 1 340
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖裂明,靈堂內(nèi)的尸體忽然破棺而出椿浓,到底是詐尸還是另有隱情,我是刑警寧澤闽晦,帶...
    沈念sama閱讀 34,334評論 4 330
  • 正文 年R本政府宣布扳碍,位于F島的核電站,受9級特大地震影響尼荆,放射性物質(zhì)發(fā)生泄漏左腔。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點故事閱讀 39,944評論 3 313
  • 文/蒙蒙 一捅儒、第九天 我趴在偏房一處隱蔽的房頂上張望液样。 院中可真熱鬧,春花似錦巧还、人聲如沸鞭莽。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,764評論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽澎怒。三九已至,卻和暖如春阶牍,著一層夾襖步出監(jiān)牢的瞬間喷面,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 31,997評論 1 266
  • 我被黑心中介騙來泰國打工走孽, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留惧辈,地道東北人。 一個月前我還...
    沈念sama閱讀 46,389評論 2 360
  • 正文 我出身青樓磕瓷,卻偏偏與公主長得像盒齿,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子困食,可洞房花燭夜當晚...
    茶點故事閱讀 43,554評論 2 349

推薦閱讀更多精彩內(nèi)容