如何找到主题WinForms控件的基于主题的属性值?对于DevExpress或一般的WinForms

时间:2011-03-10 15:47:20

标签: winforms themes devexpress

我在DevExpress.XtraEditors上下文中处理这个问题,但也许答案也适用于其他主题用于WinForms控件的情况。

基本上,我如何找出主题控件具有哪些属性设置集合?有没有办法让我去看看主题定义?另外,我可以动态地查看这些设置,即在执行期间从应用程序内部查看(很像我可以在执行期间打印出未经处理的Appearance.BackColor)吗?

1 个答案:

答案 0 :(得分:1)

我不确定你在寻找什么,但如果你有兴趣找到所有控件(或控制Type')'外观'属性,你可以使用{{3} } 方法。此方法返回TypeDescriptor.GetProperties,您可以从中选择具有CategoryAttribute.Appearance属性的属性。

您可以在控件的实例上使用此方法:

PropertyDescriptorCollection properties = TypeDescriptor.GetProperties(myButtonInstance);

或者,在控件Type上:

PropertyDescriptorCollection properties = TypeDescriptor.GetProperties(typeof(Button));

但是一旦你得到一个PropertyDescriptorCollection,你就可以测试CategoryAttribute.Appearance的存在(这意味着该属性出现在控件的'Appearance'部分 - 假设Browsable == true),如下所示:

foreach (PropertyDescriptor property in properties) {
    if (property.Attributes.Contains(CategoryAttribute.Appearance)) {
        Console.WriteLine("{0} - {1}", property.Name, property.Description);
        // Do whatever...
    }
}