Атрибут | Объекты применения | Описание |
---|---|---|
BrowsableAttribute | Свойства и события | Указывает, должно ли свойство или событие отображаться в окне обозревателя свойств. По умолчанию могут просматриваться все пользовательские свойства и события |
CategoryAttribute | Свойства и события | Указывает имя категории, к которой относится данное свойство или событие |
DescriptionAttribute | Свойства и события | Определяет небольшой фрагмент текста, который будет отображаться внизу окна свойств, когда пользователь выбирает данное свойство или событие |
DefaultPropertyAttribute | Свойства | Указывает свойство, используемое для данного компонента по умолчанию. Это свойство выбирается в окне свойств, когда пользователь выбирает данный элемент управления |
DefaultValueAttribute | Свойства | Определяет значение по умолчанию для данного свойства, которое будет применено при "переустановке" данного элемента управления в среде разработки |
DefaultEventAttribute | События | Указывает событие, используемое для данного компонента по умолчанию. Когда программист выполняет двойной щелчок на элементе управления, автоматически генерируется программный код заглушки для события, используемого по умолчанию |
Совершенствование режима проектирования CarControl
Чтобы продемонстрировать использование некоторых из этих новых атрибутов, закройте проект CarControlTestForm и снова откройте проект CarControlLibrary. Давайте создадим пользовательскую категорию (назвав ее "Конфигурация машины"), в которой будут отображаться все свойства и события CarControl. Также укажем "дружественное" описание для каждого члена и значение по умолчанию для каждого свойства. Для этого просто обновите каждое из свойств и событий типа CarControl так, чтобы они поддерживали атрибуты [Category], [DefaultValue] и [Description], как показано ниже.
public partial class CarControl: UserControl {
…
[Category ("Конфигурация машины"), Description ("Генерируется при приближении к пределу скорости. ")]
public event CarEventHandler AboutToBlow;
...
[Category ("Конфигурация машины"), Description("Имя вашей машины"), DefaultValue("Lemon")]
public string PetName {…}
…
}
Теперь позвольте прокомментировать то, что означает присваивание свойству
private string carPetName = "Lemon";
Атрибут [DefaultValue] "вступает в игру" тогда, когда программист "переустанавливает" значение данного свойства в окне свойств. Чтобы переустановить свойство в Visual Studio 2005, выберите интересующее вас свойство, щелкните на нем правой кнопкой мыши и в появившемся контекстном меню выберите Reset. Обратите внимание на то, что значение [Description] при этом появляется в нижней панели окна свойств (рис. 21.31).
Рис. 21.31. Переустановка свойства
Атрибут [Category] будет проявляться только тогда, когда программист выбирает для просмотра в окне свойств вид, сгруппированный по категориям (в противоположность просмотру по алфавиту, предлагаемому по умолчанию), рис. 21.32.
Рис. 21.32. Пользовательская категория