允许用户为winform应用程序选择全局主题

时间:2009-07-22 14:31:08

标签: user-interface themes devexpress

我正在为我内部使用的winform应用程序中使用DevExpress控件。我的应用程序总共有大约30个表单,我试图找到一种方法来允许我的用户选择一个主题。我已经多次在其他帖子的答案中看到过这里提到过的内容。

我理解StyleController是如何工作的,我相信,但我想知道的是我如何在整个应用程序中使用1个Style控制器。

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

2 个答案:

答案 0 :(得分:8)

很简单。这个例子假设您正在使用皮肤。

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

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";

答案 1 :(得分:1)

对于版本11.2,我使用了本文中的信息: http://www.devexpress.com/Support/Center/p/K18013.aspx

总结:
*从XtraForm继承所有表单 *保持外观设置默认,以便他们使用默认外观
*使用以下代码行修改默认外观:
    DevExpress.LookAndFeel.UserLookAndFeel.Default.SkinName =“DevExpress Dark Style”;