我在DevExpress.XtraEditors上下文中处理这个问题,但也许答案也适用于其他主题用于WinForms控件的情况。
基本上,我如何找出主题控件具有哪些属性设置集合?有没有办法让我去看看主题定义?另外,我可以动态地查看这些设置,即在执行期间从应用程序内部查看(很像我可以在执行期间打印出未经处理的Appearance.BackColor)吗?
答案 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...
}
}