Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Троелсен Э. Язык программирования С# 2010 и п...docx
Скачиваний:
113
Добавлен:
21.09.2019
Размер:
6.92 Mб
Скачать

Пространство имен System.ComponentModel

Пространство имен System.ComponentModel определяет целый ряд атрибутов (и других типов), позволяющих описать то, как должны вести себя ваши элементы управления в режиме проектирования. Например, вы можете указать текстовое описание каждого свойства, определить событие, выбранное по умолчанию, или сгруппировать ряд свойств или событий в пользовательскую категорию, чтобы они отображались вместе в окне свойств Visual Studio 2005. Чтобы выполнить указанные модификации, вы должны использовать атрибуты, показанные в табл. 21.12.

Таблица 21.12. Подборка членов System.ComponentModel

Атрибут

Объекты применения

Описание

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 {…}

 …

}

Теперь позвольте прокомментировать то, что означает присваивание свойству значения по умолчанию, поскольку, я уверен, это не то, что вы можете (естественно) предполагать. Упрощенно говоря, атрибут [DefaultValue] не гарантирует, что соответствующее значение элемента данных, представленного данным свойством будет автоматически установлено равным значению по умолчанию. Так, хотя вы и указали значение по умолчанию "Lemon" для свойства PetName, член-переменная carPetName не получит значения "Lemon", пока вы не установите это значение с помощью конструктора типа или синтаксиса инициализации члена (что вы уже на самом деле сделали).

private string carPetName = "Lemon";

Атрибут [DefaultValue] "вступает в игру" тогда, когда программист "переустанавливает" значение данного свойства в окне свойств. Чтобы переустановить свойство в Visual Studio 2005, выберите интересующее вас свойство, щелкните на нем правой кнопкой мыши и в появившемся контекстном меню выберите Reset. Обратите внимание на то, что значение [Description] при этом появляется в нижней панели окна свойств (рис. 21.31).

Рис. 21.31. Переустановка свойства

Атрибут [Category] будет проявляться только тогда, когда программист выбирает для просмотра в окне свойств вид, сгруппированный по категориям (в противоположность просмотру по алфавиту, предлагаемому по умолчанию), рис. 21.32.

Рис. 21.32. Пользовательская категория