Allowing user selected Global Theme for winform app

本小妞迷上赌 提交于 2020-01-14 12:39:40

问题


I am using DevExpress controls in a winform app I am building for internal use. My app has about 30 forms in total and I am trying to figure out a way to allow my user's to select a theme. I have seen this mentioned here at SO multiple times in answers to other posts.

I understand how the StyleController works, I believe, but what I am wondering is how I can use 1 Style controller for the whole app.

Right now I am trying to create 1 StlyeController at the Shell form and then pass a reference to it to each child form. From there I then have to programatically set the StyleController property for each control. I don't mind I just wonder, especially from those who have done this, if there is a simpler way?


回答1:


It is very simple. This example is assuming that you are using skins.

In the constructor of your main form calls:

DevExpress.Skins.SkinManager.EnableFormSkins();

This will enable your form to use the current skin. It is also important that each of your forms derived from XtraForm.

After that you need to setup the global look and feel object for your application:

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

If you want to set the look and feel of your application like Office 2003, the setup is different. You just have to call the following function:

DevExpress.LookAndFeel.UserLookAndFeel.Default.SetOffice2003Style();

So, every control of devexpress will use these settings to paint themselves. It is possible to specify a custom LookAndFeel object for some controls but I never used it because I dont see the point to have a custom display for a control or a form.

Exception: There is one exception in Devexpress framework. The NavBarControl does not use the skin technology automatically from your global LookAndFeel object, you need to specify a setting to enable that:

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

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



回答2:


With version 11.2 I used the information in this article: http://www.devexpress.com/Support/Center/p/K18013.aspx

In summary :
* Inherit all your forms from XtraForm * Leave look and feel settings default so that they use the default skin
* Modify the default skin with the following line of code:
DevExpress.LookAndFeel.UserLookAndFeel.Default.SkinName = "DevExpress Dark Style";



来源:https://stackoverflow.com/questions/1165712/allowing-user-selected-global-theme-for-winform-app

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!