在本篇介绍的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的配置项,方便程序进行存储皮肤名称。
这样就能够实现咱们皮肤的变化及存储功能了,修改皮肤,并重启程序,系统依旧使用保存好的皮肤,功能符合预期。
这个功能不算复杂,提供代码方便你们进行复制使用。