如何找到主题WinForms控件';基于主题的属性值?一般来说,适用于DevXPress或WinForms
我在DevExpress.XtraEditors上下文中处理这个问题,但答案可能也适用于WinForms控件使用主题的其他情况如何找到主题WinForms控件';基于主题的属性值?一般来说,适用于DevXPress或WinForms,winforms,themes,devexpress,Winforms,Themes,Devexpress,我在DevExpress.XtraEditors上下文中处理这个问题,但答案可能也适用于WinForms控件使用主题的其他情况 基本上,我如何找出主题控件有哪些属性设置集合?有没有办法让我看看主题的定义?此外,我是否可以动态查看这些设置,即在执行过程中从应用程序内部查看(就像我可以在执行过程中打印出非主题外观。背景色)?我不确定您要查找什么,但如果您对查找所有控件(或控件类型)感兴趣“外观”属性您可以使用该方法。此方法返回一个属性,您可以从中选择具有CategoryAttribute.Appea
基本上,我如何找出主题控件有哪些属性设置集合?有没有办法让我看看主题的定义?此外,我是否可以动态查看这些设置,即在执行过程中从应用程序内部查看(就像我可以在执行过程中打印出非主题外观。背景色)?我不确定您要查找什么,但如果您对查找所有控件(或控件<代码>类型代码>)感兴趣“外观”属性您可以使用该方法。此方法返回一个属性,您可以从中选择具有
CategoryAttribute.Appearance
属性的属性
您可以在控件的实例上使用此方法:
PropertyDescriptorCollection properties = TypeDescriptor.GetProperties(myButtonInstance);
或者,在控件上键入:
PropertyDescriptorCollection properties = TypeDescriptor.GetProperties(typeof(Button));
但是,一旦获得PropertyDescriptorCollection
,就可以测试是否存在CategoryAttribute.Appearance
(这意味着该属性出现在控件的“外观”部分-假设Browsable==true),如下所示:
foreach (PropertyDescriptor property in properties) {
if (property.Attributes.Contains(CategoryAttribute.Appearance)) {
Console.WriteLine("{0} - {1}", property.Name, property.Description);
// Do whatever...
}
}