在本篇介紹的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)依舊使用保存好的皮膚夺衍,功能符合預期狈谊。
這個功能不算復雜,提供代碼方便大家進行復制使用沟沙。