2011-03-10 45 views
0

我正在處理DevExpress.XtraEditors上下文中的這個問題,但也許答案也適用於主題用於WinForms控件的其他情況。如何找到主題WinForms控件的基於主題的屬性值?爲DevExpress或WinForms一般

基本上,我該如何找出主題控件具有哪些屬性設置集合?有沒有辦法讓我去看看主題定義?另外,我是否可以動態地查看這些設置,即在執行期間從應用程序內部進行查看(就像我可以在執行過程中打印出無形的Appearance.BackColor一樣)?

回答

1

我不確定你在找什麼,但如果你有興趣找到所有的控件(或控制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... 
    } 
}