彩票走势图

DevExpress窗体风格应用以及MDI子窗体风格的应用

原创|其它|编辑:郝浩|2011-04-19 15:45:06.000|阅读 2176 次

概述:但是个人感觉这套控件虽然相当豪华,但是很难上手,资料少不说,其属性设置什么的与通常的属性差别太大,应用起来太难。相比dotNetBar要好很多,比如改造现有窗体只需要改变按钮类型以及窗体父类就可以了,但是对于DevExpress这简直是天方夜谭。研究整整两天到现在才有关于窗体皮肤的那么一点头绪,真郁闷。

# 慧都年终大促·界面/图表报表/文档/IDE等千款热门软控件火热促销中 >>

  但是个人感觉这套控件虽然相当豪华,但是很难上手,资料少不说,其属性设置什么的与通常的属性差别太大,应用起来太难。相比dotNetBar要好很多,比如改造现有窗体只需要改变按钮类型以及窗体父类就可以了,但是对于DevExpress这简直是天方夜谭。研究整整两天到现在才有关于窗体皮肤的那么一点头绪,真郁闷。

  在DevExpress中有些内建的风格了,要加载额外的风格,需要使用 DevExpress.Skins.SkinManager.Default.RegisterAssembly 这个方法,下面是示例代码:

DevExpress.Skins.SkinManager.Default.RegisterAssembly

(System.Reflection.Assembly.Load("DevExpress.BonusSkins.v7.3"));

            DevExpress.Skins.SkinManager.Default.RegisterAssembly

(System.Reflection.Assembly.Load("Office2007Bonus"));

            //DevExpress.Skins.SkinManager.Default.RegisterAssembly

(System.Reflection.Assembly.Load("DevExpress.XmasSkins"));

            DevExpress.Skins.SkinManager.Default.RegisterAssembly

(System.Reflection.Assembly.Load("DevExpress.OfficeSkins.v7.3"));

  上面那行注释掉的是因为运行会出错,个人估计是因为破解的缘故,呃。这样加载的结果,大概是有17个风格出现。

  DevExpress窗体风格应用以及MDI子窗体风格的应用 在风格加载过后,通过 DevExpress.Skins.SkinManager.Default.Skins 可以获得所有皮肤的列表。

  在应用控件后,窗体要应用DevExpress的风格,可以让窗体不从 System.Windows.Forms.Form 继承而从 DevExpress.XtraEditors.XtraForm 继承,这样窗体就可以使用DevExpress 的风格颜色配置了。但是这样使用后还会有问题,就是窗体的边框不会被DevExpress的风格应用上。

  要解决这个问题,可以使用 DevExpress.Skins.SkinManager.EnableFormSkins() 这个方法,在应用后,窗体边框也会被应用上风格。这个方法建议在创建窗体前就调用,比如在 Program.cs 的Main方法中,在 Application.Run 调用前就使用,这样能避免很多问题。

  到此基本上达到目的了,但是呢,人类的欲望是无穷的啊。现在就会发现有点不爽的地方了,是什么呢?就是当一个窗体是MDI窗体(MDIParent不为空)的时候,这个窗体是无论如何也无法被应用的。郁闷不?那当然郁闷,何止是郁闷,那不是一般的郁闷啊。可怜DevExpress的开发文档少得就如同我兜里的钞票一样,在它的Demo之内也没有找到示例。

 

  不过终于找到方法了,还是从开发文档中找到的,那就是 evExpress.Skins.SkinManager.EnableMdiFormSkins() 这个方法。望文生义,看这个方法的名字就知道这个函数是干嘛了吧??

 

  但是很让我感觉不对劲的是,为什么在VS里面找不到这个方法。在SDK中对这个方法的解释是,“This member supports the internal infrastructure and is not intended to be used directly from your code”。我英语不太好,但是我看懂了它是在说不建议直接从代码中调用,也不知道是为什么。祭出伟大的 Reflector 反编译一下 DevExpress.Utils.v7.3.dll ,看到这样的代码:

 

1[Browsable(false), EditorBrowsable(EditorBrowsableState.Never)]



2public static void EnableMdiFormSkins()

3{

4    allowMdiFormSkins = true;

5}

  琢磨着可能有其它的方法能间接调用,但是折腾这么久死了N+脑细胞也没能找到是因为什么啊,忧郁

  算了,最后就直接调用了,编译正常,运行也正常。想不通,但就这么着吧。最后Program.cs中的代码如下:

[STAThread]



static void Main()

{

    Application.EnableVisualStyles();

    DevExpress.UserSkins.OfficeSkins.Register();

    DevExpress.Skins.SkinManager.EnableFormSkins();

    DevExpress.Skins.SkinManager.EnableMdiFormSkins();

    Application.SetCompatibleTextRenderingDefault(false);

    Application.Run(new MainForm());

(慧都控件网版权所有,转载请注明出处,否则追究法律责任)


标签:DevExpress控件DevExpress控件

本站文章除注明转载外,均为本站原创或翻译。欢迎任何形式的转载,但请务必注明出处、不得修改原文相关链接,如果存在内容上的异议请邮件反馈至chenjj@pclwef.cn

文章转载自:网络转载

为你推荐

  • 推荐视频
  • 推荐活动
  • 推荐产品
  • 推荐文章
  • 慧都慧问
扫码咨询


添加微信 立即咨询

电话咨询

客服热线
023-68661681

TOP