как узнать значения свойств тематического элемента управления WinForms? для DevExpress или для WinForms в целом - PullRequest
0 голосов
/ 10 марта 2011

Я имею дело с этой проблемой в контексте DevExpress.XtraEditors, но, возможно, ответ будет также применим к другим ситуациям, когда темы используются для элементов управления WinForms.

По сути, как узнать, какая коллекция свойствнастройки есть у тематического элемента управления?Есть ли способ для меня, чтобы посмотреть на определение темы?Кроме того, можно ли посмотреть на эти параметры динамически, т. Е. Из приложения во время выполнения (так же, как я могу распечатать неповрежденный Appearance.BackColor во время выполнения)?

1 Ответ

1 голос
/ 10 марта 2011

Я не уверен, что вы ищете, но если вы заинтересованы в поиске всех свойств внешнего вида элемента управления (или элемента управления Type), вы можете использовать TypeDescriptor.GetProperties метод.Этот метод возвращает PropertyDescriptorCollection , из которого вы можете выбрать свойства со свойством CategoryAttribute.Appearance.

Этот метод можно использовать для экземпляра элемента управления:

PropertyDescriptorCollection properties = TypeDescriptor.GetProperties(myButtonInstance);

Или на элементе управления Type:

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

Но как только вы получите PropertyDescriptorCollection, вы можете проверить наличие CategoryAttribute.Appearance (что означает, что свойство появляется в 'Внешний вид элемента управления''section - при условии, что Browsable == true) примерно так:

foreach (PropertyDescriptor property in properties) {
    if (property.Attributes.Contains(CategoryAttribute.Appearance)) {
        Console.WriteLine("{0} - {1}", property.Name, property.Description);
        // Do whatever...
    }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...