Каким образом класс Control предоставляет значения ForeColor, BackColor и Font по умолчанию?

StackOverflow https://stackoverflow.com/questions/2562265

Вопрос

Я знаю, что component-model указывает, имеет ли свойство значение по умолчанию или нет, посредством ShouldSerializeValue метод PropertyDescriptor.

Базовые windows-формы Control класс, обладающий некоторыми свойствами, такими как Передний цвет, задний цвет и шрифт, который по умолчанию имеет то же значение, что и родительский, но я не смог найти ни одного TypeDescriptor или PropertyDescriptor это обеспечивает эти значения по умолчанию. Класс Control не реализует ICustomTypeDescriptor и не имеет атрибута TypeDescriptionProviderAttribute.

Как класс Control указывает, что эти свойства должны быть сериализованы или нет?Где он предоставляет PropertyDescriptors для этих свойств??

Спасибо!!!

Это было полезно?

Решение

У них нет значений по умолчанию.Эти свойства являются свойствами "окружающей среды".Класс Control обнаруживает, что для них произошло присвоение свойства.Если этого никогда не происходило, он использует соответствующее свойство Родительского элемента.Что приятно, это гарантирует, что дочерние элементы управления используют те же цвета и шрифт, что и их контейнер.

В классе Control есть метод ShouldSerializeForeColor().Он является внутренним и не может быть переопределен пользовательским кодом.То же самое и для других объектов недвижимости.Посмотрите с помощью Reflector или справочного источника .NET.

Тот Самый Библиотека MSDN документируйте их следующим образом:

Элементы управления Windows Forms используют окружающие свойства, поэтому дочерние элементы управления могут выглядеть как их окружение environment.Окружающее свойство - это свойство элемента управления, которое, если оно не задано, извлекается из родительского элемента управления.Если элемент управления не имеет родительского элемента, и свойство не задано, элемент управления пытается определить значение окружающего свойства с помощью свойства сайта.Если элемент управления не установлен, если сайт не поддерживает свойства окружающей среды или если свойство не задано в AmbientProperties, элемент управления использует свои собственные значения по умолчанию.Обычно свойство ambient представляет характеристику элемента управления, такую как BackColor, которая передается дочернему элементу управления.Например, кнопка по умолчанию будет иметь тот же задний цвет, что и ее родительская форма.Окружающая среда свойства, предоставляемые элементом управления класс включает в себя:Курсор, шрифт, BackColor, ForeColor и RightToLeft.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top