C#实现DevExpress控件换肤功能[vjsdn]改进篇
2010-07-28 14:07
471 查看
在写CS框架第2版时遇到换肤问题,最初设计思路是建立一个窗体frmBase,继承XtraForm,在窗体拖放一个DefaultLookAndFeel控件,项目内所有窗体都继承frmBase类。在frmBase_Load事件内设
this.DefaultLookAndFeel.LookAndFeel.SkinName = skinName就可以设置皮肤。然而,这种设计带来一个问题: 当打开一个窗体时加载两次皮肤引起NavBarControl控件闪烁!查看Designer.cs:
引起闪烁的原因:
窗体构造器调用InitializeComponent()方法,该方法会实例化this.defaultLookAndFeel1 控件。
因this.defaultLookAndFeel1预设SkinName是Caramel, 此时加载Caramel皮肤。接下来执行
frmLoad事件,又加载从用户配置文件读取的SkinName,如皮肤名不同会引起闪烁!
解决方法是:去掉窗体上的defaultLookAndFeel1控件,自己写代码构造defaultLookAndFeel1对象,
通过改进后frmBase窗体代码如下:
代码
通过调用窗体的LoadSkin方法设置皮肤。
本程序类关系图
皮肤名:Caramel
皮肤名:Black
皮肤名:Blue
参考:DevExpress换肤功能使用方法
下载请到原帖:http://www.vjsdn.net/bbs/bbsTopicDetails.aspx?pid=112071224
this.DefaultLookAndFeel.LookAndFeel.SkinName = skinName就可以设置皮肤。然而,这种设计带来一个问题: 当打开一个窗体时加载两次皮肤引起NavBarControl控件闪烁!查看Designer.cs:
private void InitializeComponent() { .... this.defaultLookAndFeel1 = new DevExpress.LookAndFeel.DefaultLookAndFeel(this.components); ..... }
引起闪烁的原因:
窗体构造器调用InitializeComponent()方法,该方法会实例化this.defaultLookAndFeel1 控件。
因this.defaultLookAndFeel1预设SkinName是Caramel, 此时加载Caramel皮肤。接下来执行
frmLoad事件,又加载从用户配置文件读取的SkinName,如皮肤名不同会引起闪烁!
解决方法是:去掉窗体上的defaultLookAndFeel1控件,自己写代码构造defaultLookAndFeel1对象,
通过改进后frmBase窗体代码如下:
代码
public partial class frmBase : XtraForm { //定义皮肤控件 public DefaultLookAndFeel DefaultLookAndFeel; public frmBase() { InitializeComponent(); DefaultLookAndFeel = new DefaultLookAndFeel(); } /// <summary> /// 设置皮肤 /// </summary> /// <param name="skinName"></param> public void LoadSkin(string skinName) { this.DefaultLookAndFeel.LookAndFeel.SkinName = skinName; } }
通过调用窗体的LoadSkin方法设置皮肤。
本程序类关系图
皮肤名:Caramel
皮肤名:Black
皮肤名:Blue
参考:DevExpress换肤功能使用方法
下载请到原帖:http://www.vjsdn.net/bbs/bbsTopicDetails.aspx?pid=112071224
相关文章推荐
- DevExpress换肤功能使用方法[vjsdn]
- datalist控件(c#)实现分页功能
- js实现清除筛选条件功能. js 中jquery.sumoselect 多选控件,去掉多选中多个选中的样式和文字,改成未选中
- c#控件实现类似c++中ocx控件功能,Event事件
- DevExpress.LookUpEdit控件实现自动搜索定位功能
- js 模拟实现类似c#下的hashtable的简单功能代码
- VS C# .NET WebBrowser控件 利用插入JS代码,实现控制弹出IE窗口
- c#实现魔兽(warIII)中显血和改键功能 (附源码)(Hook中start方法已改进)
- C#动态执行类库中的函数:利用反射实现(js)Eval,asp(Execute)功能
- WPF学习——制作一个简单的录入界面(2):用C#编程实现所有控件的功能
- C# 中代码Dialog控件实现(打开,保存,改变字体,颜色,打印功能)
- 控件(五)——Gridview控件以SqlDataSource控件为数据源实现换肤功能
- DevExpress.LookUpEdit控件实现自动搜索定位功能(定位和显示可是同一行不同列值)
- [DevExpress控件应用]XtraBar: 实现回车移动到下个控件的功能
- C# WINFORM 某些控件实现联想输入功能
- C# WINFORM 某些控件实现联想输入功能
- c# winform TreeView控件中实现拖拽的功能
- js中两个控件实现一个功能的写法
- Winform(C#.NET)自动更新组件的使用及部分功能实现(一点改进功能)