我正在處理DevExpress.XtraEditors上下文中的這個問題,但也許答案也適用於主題用於WinForms控件的其他情況。如何找到主題WinForms控件的基於主題的屬性值?爲DevExpress或WinForms一般
基本上,我該如何找出主題控件具有哪些屬性設置集合?有沒有辦法讓我去看看主題定義?另外,我是否可以動態地查看這些設置,即在執行期間從應用程序內部進行查看(就像我可以在執行過程中打印出無形的Appearance.BackColor一樣)?
我正在處理DevExpress.XtraEditors上下文中的這個問題,但也許答案也適用於主題用於WinForms控件的其他情況。如何找到主題WinForms控件的基於主題的屬性值?爲DevExpress或WinForms一般
基本上,我該如何找出主題控件具有哪些屬性設置集合?有沒有辦法讓我去看看主題定義?另外,我是否可以動態地查看這些設置,即在執行期間從應用程序內部進行查看(就像我可以在執行過程中打印出無形的Appearance.BackColor一樣)?
我不確定你在找什麼,但如果你有興趣找到所有的控件(或控制Type
)的'外觀'屬性,你可以使用TypeDescriptor.GetProperties方法。此方法返回一個PropertyDescriptorCollection,您可以從中使用CategoryAttribute.Appearance
屬性挑選出屬性。
您可以在控制的情況下使用此方法:
PropertyDescriptorCollection properties = TypeDescriptor.GetProperties(myButtonInstance);
或者,在控制Type
:
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...
}
}