Как класс Control предоставляет значения по умолчанию ForeColor, BackColor и Font? - PullRequest
0 голосов
/ 01 апреля 2010

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

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

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

Спасибо !!!

1 Ответ

2 голосов
/ 01 апреля 2010

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

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

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

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...