User interface 允许用户为winform应用选择全局主题

User interface 允许用户为winform应用选择全局主题,user-interface,themes,devexpress,User Interface,Themes,Devexpress,我正在为内部使用而构建的winform应用程序中使用DevXPress控件。我的应用程序总共有大约30个表单,我正试图找到一种方法让我的用户选择一个主题。我在其他帖子的回复中多次提到这一点 我知道StyleController是如何工作的,我相信,但我想知道的是,如何在整个应用程序中使用1个StyleController 现在,我正在尝试在Shell窗体上创建1个StlyeController,然后将对它的引用传递给每个子窗体。然后,我必须通过编程为每个控件设置StyleController属性

我正在为内部使用而构建的winform应用程序中使用DevXPress控件。我的应用程序总共有大约30个表单,我正试图找到一种方法让我的用户选择一个主题。我在其他帖子的回复中多次提到这一点

我知道StyleController是如何工作的,我相信,但我想知道的是,如何在整个应用程序中使用1个StyleController


现在,我正在尝试在Shell窗体上创建1个StlyeController,然后将对它的引用传递给每个子窗体。然后,我必须通过编程为每个控件设置StyleController属性。我不介意,我只是想知道,特别是那些做过这件事的人,是否有更简单的方法?

非常简单。本例假设您正在使用皮肤

在主窗体的构造函数中调用:

DevExpress.Skins.SkinManager.EnableFormSkins();
这将使窗体能够使用当前蒙皮。同样重要的是,您的每个表单都是从XtraForm派生的

之后,需要为应用程序设置全局外观对象:

//This set the style to use skin technology
DevExpress.LookAndFeel.UserLookAndFeel.Default.Style = DevExpress.LookAndFeel.LookAndFeelStyle.Skin;

//Here we specify the skin to use by its name           
DevExpress.LookAndFeel.UserLookAndFeel.Default.SetSkinStyle("Black");
如果要设置应用程序的外观,如Office 2003,则设置是不同的。您只需调用以下函数:

DevExpress.LookAndFeel.UserLookAndFeel.Default.SetOffice2003Style();
因此,devexpress的每个控件都将使用这些设置来绘制自己。可以为某些控件指定自定义LookAndFeel对象,但我从未使用过它,因为我看不到为控件或窗体自定义显示的意义

例外情况: Devexpress框架中有一个例外。NavBarControl不会从全局LookAndFeel对象自动使用蒙皮技术,您需要指定一个设置以启用该设置:

//To use the current skin
youNavBarControl.PaintStyleName = "SkinNavigationPane";

//To use the current look and feel without the skin
youNavBarControl.PaintStyleName = "NavigationPane";

对于11.2版,我使用了本文中的信息:

总之:
*从XtraForm继承所有表单 *将外观设置保留为默认设置,以便使用默认外观
*使用以下代码行修改默认外观:

DevExpress.LookAndFeel.UserLookAndFeel.Default.SkinName=“DevExpress深色样式”

我可能采用这种方式来表示文字,但在-->(MyConfiguration.SkinName);MyConfiguration代表什么?对不起,我使用MyConfiguration来简化代码。在我的例子中,MyConfiguration表示一个类,它保存我的应用程序的配置信息,并因此保存在应用程序启动时使用的皮肤名称。您可以用自己的字符串替换MyConfiguration.SkinName,或者如果您想立即测试代码,可以使用以下字符串:“沥青世界”、“蓝色”、“黑色”、“焦糖色”或“Lilian”,这是DevExpress附带的基本皮肤名称。@Refracted Paladin:我更新了答案,在SetSkinStyle()方法中使用了更通用的代码。我将皮肤名称改为“Black”,而不是前面的“MyConfiguration.SkinName”。