DevExpress 中的LookAndFeel机理

Look And Feel被类UserLookAndFeel类实现,每个支持该机理的控件,都有一项属性叫做LookAndFeel,通常,所有的控件都是使用该类的一个静态缺省对象。

例如在窗体中添加一个简单按钮DevExpress.XtraEditors.SimpleButton simpleButton1,该按钮就会有LookAndFeel属性:

DevExpress 中的LookAndFeel机理 - Castor - 趁年轻,多折腾~~

你要特别注意这个LookAndFeel下的UseDefaultLookAndFeel和 UseWindowsXPTheme,这两个属性能够否决所有其他的设置。

如果UseDefaultLookAndFeel被设置为True,则所有其他的设置将会被无视,将会采用默认的设置,那么默认的设置是什么呢?默认的设置又是可以定制的。这个看起来有点奇怪,其实慢慢看就会明白。

在工具箱中Component下拖动一个DefaultLookAndFeel控件(DevExpress.LookAndFeel.DefaultLookAndFeel defaultLookAndFeel1)
后,设置其属性,这个属性就会作为全局的默认属性,程序员就可以自行定制默认的LookAndFeel了。

这个时候你试试设置UseDefaultLookAndFeel会发现只能改为True(因为没有上级的LookAndFeel供其参考了),同时把UseWindowsXPTheme设置为False,然后修改一下SkinName,例如为Lilian,会发现简单按钮的外观发生了改变。在往其中添加控件,你会发现会自动使用Lilian外观:

DevExpress 中的LookAndFeel机理 - Castor - 趁年轻,多折腾~~

现在,一旦我修改了defaultLookAndFeel1的SkinName,这四个控件的外观都会按统一的样式发生变化,有趣的是,这一改变是可以在运行时发生的,例如我们给simpleButton1添加事件:

private void simpleButton1_Click(object sender, EventArgs e)
{
    this.defaultLookAndFeel1.LookAndFeel.SkinName = "iMaginary";
}

在运行过程就可以修改程序的外观了。

如果UseDefaultLookAndFeel被设置为False,控件的外观就会受到UseWindowsXPTheme的影响,如果说UseDefaultLookAndFeel是总统的话,则UseWindowsXPTheme就是副总统了。该属性决定了控件的外观是否受到XP样式的影响,当副总统说True的时候,并且系统恰好使用了XP主题,则UserLookAndFeel.Style的值就会被无视,而采用XP的主题。

修改简单按钮的的点击事件,试试分别在副总统说True和False的时候运行该代码:

private void simpleButton1_Click(object sender, EventArgs e)
{
    this.defaultLookAndFeel1.LookAndFeel.Style = LookAndFeelStyle.Office2003;
}

你就会知道副总统还是管点事的。

如果真想修改Style,比较好的建议是在运行时修改其值,例如:

private void simpleButton1_Click(object sender, EventArgs e)
{
    this.defaultLookAndFeel1.LookAndFeel.UseWindowsXPTheme = false;
    this.defaultLookAndFeel1.LookAndFeel.Style = LookAndFeelStyle.Office2003;//要使用命名空间using DevExpress.LookAndFeel;

}
这样就可以不管控件的默认值了。

 最后说说UserLookAndFeel.Style,它接收或者返回一个 LookAndFeelStyle的枚举值,其中有Flat、Office2003、UltraFlat等,具体可查看帮助文档。

呃,还忘记了SkinName,前面可以发现,该属性接收或者返回的是字符串,其实可行的字符串也就那几种吧,即Caramel、Money Twins、Lilian、iMaginary、DevExpress Dark Style、Black、Blue,如果设置其他值,会有什么后果呢?你自己试试吧

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值