DevExpress增加修改皮肤菜单

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/whucv/article/details/37544861

当我们在新建“Form”时,选择DevExpress Form为模板,就可以应用DevExpress的漂亮主题了。此时,From继承的是“DevExpress.XtraEditors.XtraForm”。

或者如果是Form,则修改基类为XtraForm或RibbonForm

 public partial class MainForm : DevExpress.XtraBars.Ribbon.RibbonForm

所有DevExpress .NET WinForms控件都支持皮肤技术。皮肤实际上是一种决定控件元素在其可能的状态(正常、热追踪、选择、按下等)被绘制的一组位图集合。皮肤能够保证在不同的系统下都有相同的外观,DevExpress.Utils库下有几款皮肤,即Caramel、Money Twins、Lilian、iMaginary、Black、Blue,另外在DevExpress.BonusSkins库下面还有Coffee、Liquid Sky、London Liquid Sky、Glass Oceans、Stardust、Xmas 2008 Blue、Valentine、McSkin几款皮肤,DevExpress.OfficeSkins库下面有Office 2007 Blue、Office 2007 Black、Office 2007 Silver、Office 2007 Green、Office 2007 Pink等皮肤。
如何使用这些丰富的皮肤呢?
首先要添加对类库的引用
前面提到DevExpress.Utils、DevExpress.BonusSkins和DevExpress.OfficeSkins类库下具有的皮肤,所以要添加对这些类库的应用。

【原创】DevExpress Skin 皮肤机理 - Castor - 趁年轻,多折腾~~

接下来,需要注册这些皮肤,注册皮肤需要在程序入口处添加,而且要在窗口出现之前。双击打开Program.cs,将Main函数修改如下:
[STAThread]
static void Main()
{
    Application.EnableVisualStyles();
    Application.SetCompatibleTextRenderingDefault(false);
    //下面是注册皮肤
    DevExpress.UserSkins.BonusSkins.Register();
    DevExpress.UserSkins.OfficeSkins.Register();

    Application.Run(new XtraForm1());
}
这样才能在程序中正常地使用皮肤。请注意我这里使用的是DevExpress下的XtraForm窗体,而不是VS自动提供的Form类,因为XtraForm具有LookAndFeel属性。
为了演示一下不同的皮肤,我们可以给窗体添加一个ListBoxControl,并在Items中输入如下内容:
Caramel
Money Twins
Lilian
iMaginary
Black
Blue
Coffee
Liquid Sky
London Liquid Sky
Glass Oceans
Stardust
Xmas 2008 Blue
Valentine
McSkin
Office 2007 Blue
Office 2007 Black
Office 2007 Silver
Office 2007 Green
Office 2007 Pink

当然了,这些代码也是可以在运行时添加的,ListBoxControl和ListBox用法差不多,具体用法就不啰嗦了。
给窗体添加一个DefaultLookAndFeel控件,该控件类似一个全局变量,决定了控件使用的默认皮肤。

双击列表控件,添加事件处理代码:
private void listBoxControl1_SelectedIndexChanged(object sender, System.EventArgs e)
{
    defaultLookAndFeel1.LookAndFeel.UseWindowsXPTheme = false;
    defaultLookAndFeel1.LookAndFeel.Style = DevExpress.LookAndFeel.LookAndFeelStyle.Skin;
    string SkinName = listBoxControl1.SelectedItem.ToString();
    defaultLookAndFeel1.LookAndFeel.SkinName = SkinName;
}

运行就可以发现点击不同的名称,就会出现不一样的皮肤:

【原创】DevExpress Skin 皮肤机理 - Castor - 趁年轻,多折腾~~

【原创】DevExpress Skin 皮肤机理 - Castor - 趁年轻,多折腾~~

【原创】DevExpress Skin 皮肤机理 - Castor - 趁年轻,多折腾~~

最后再强调一次,使用皮肤一定要将LookAndFeel属性设置如下: 
UseDefaultLookAndFeel和UseWindowsXPTheme属性必须为false,Style 属性必须设置为LookAndFeelStyle.Skin。然后才能通过SkinName 属性实现皮肤样式的修改。

标题栏皮肤

DevExpress窗体(包括XtraForm,RibbonForm,XtraMessageBox以及其他由DevExpress显示的对话框、消息框等)都支持标题栏皮肤
设置标题栏皮肤很简单,你只要在Program.cs下的Main中添加一条语句即可:
 DevExpress.Skins.SkinManager.EnableFormSkins(); //需要在Run前面调用
 Application.Run(new XtraForm1());
可以对比一下添加该语句和没有该语句的效果:

【原创】DevExpress标题栏皮肤 - Castor - 趁年轻,多折腾~~

 没有使用DevExpress.Skins.SkinManager.EnableFormSkins()方法

【原创】DevExpress标题栏皮肤 - Castor - 趁年轻,多折腾~~

 使用DevExpress.Skins.SkinManager.EnableFormSkins()方法

当然,也可以在Run后面调用,但是在使用了EnableFormSkins之后需要调用DevExpress.LookAndFeel.LookAndFeelHelper.ForceDefaultLookAndFeelChanged方法,例如将代码加入到前面的listBoxControl1的SelectedIndexChanged事件中:
private void listBoxControl1_SelectedIndexChanged(object sender, System.EventArgs e)
{
    defaultLookAndFeel1.LookAndFeel.UseWindowsXPTheme = false;
    defaultLookAndFeel1.LookAndFeel.Style = DevExpress.LookAndFeel.LookAndFeelStyle.Skin;
    DevExpress.Skins.SkinManager.EnableFormSkins();
    DevExpress.LookAndFeel.LookAndFeelHelper.ForceDefaultLookAndFeelChanged();

    string SkinName = listBoxControl1.SelectedItem.ToString();
    defaultLookAndFeel1.LookAndFeel.SkinName = SkinName;
}
运行可以发现效果是一样的。
如果要禁用标题栏皮肤,可以使用SkinManager.DisableFormSkins方法,然后再调用LookAndFeelHelper.ForceDefaultLookAndFeelChanged方法,这样可以在运行时控制是否使用标题栏皮肤。


展开阅读全文

没有更多推荐了,返回首页