ЯЗЫК ПРОГРАММИРОВАНИЯ С# 2005 И ПЛАТФОРМА .NET 2.0. 3-е издание
Шрифт:
Тестирование типа CarControl
При запуске или отладке проекта Windows Control Library в Visual Studio 2005 иcпользуется UserControl Test Container (испытательный контейнер пользовательских элементов управления). Это управляемый вариант теперь уже устаревшего ActiveX Control Test Container (испытательный контейнер элементов управления ActiveX). Этот инструмент автоматически загружает ваш элемент управления в окружение испытательного стенда режима проектирования. Как показывает рис. 21.29, этот инструмент позволяет установить для проверки значение любого пользовательского свойства (как и любого наследуемого).
Рис. 21.29.
Установив для свойства Animate значение true (истина), вы увидите цикл анимации CarControl с использованием первых трех файлов *.bmp. Однако с помощью этой утилиты тестирования вы не сможете обрабатывать события. Чтобы проверить эту возможность вашего элемента интерфейса, нужно построить пользовательскую форму.
Создание пользовательской формы для CarControl
Как и в случае любого другого .NET-типа, вы можете использовать свой элемент управления в рамках любого языка, совместимого со средой CLR. Закройте текущее рабочее пространство и создайте новый C#-проект Windows Application с именем CarControlTestForm. Чтобы сослаться на пользовательские элементы управления из Visual Studio 2005, щелкните правой кнопкой мыши в любом месте окна Toolbox и выберите пункт меню Choose Item (Выбрать элемент). Используя кнопку Browse (Просмотр) на вкладке .NET Framework Components (Компоненты .NET), перейдите к своей библиотеке CarControlLibrary.dll. После щелчка на кнопке OK вы обнаружите в панели инструментов новую пиктограмму с названием, конечно же, CarControl.
После этого поместите новый элемент CarControl в окно проектирования формы. Обратите внимание на то, что при этом свойства Animate, PetName и Speed тоже появляются в окне свойств. Точно так же, как и в случае испытательного контейнера, ваш элемент управления "живет своей жизнью" в режиме проектирования. Поэтому, если вы установите для свойства Animate значение true, вы увидите анимацию автомобиля в окне проектирования формы.
Сконфигурировав начальное состояние CarControl, добавьте дополнительные элементы графического интерфейса, которые дозволят увеличивать и уменьшать скорость автомобиля, а также видеть текущую скорость автомобиля и строковые данные, посылаемые генерируемыми событиями (для этого вполне подойдут элементы управления Label). Один из возможных вариантов показан на рис. 21.30.
Рис. 21.30. Графический интерфейс клиента
В предположении о том, что вы создали графический пользовательский интерфейс, аналогичный показанному на рисунке, программный код в рамках вашего типа Form должен быть очень простым (здесь я предполагаю, что вы обработали каждое из событий CarControl с помощью окна свойств).
Теперь вы можете запустить ваше приложение клиента на выполнение и проверить его взаимодействие с CarControl. Как видите, задача построения и использования пользовательских элементов управления оказывается достаточно простой, конечно, при условии, что вы уже имеете достаточные знания об ООП, системе типов .NET, GDI+ (т.е. о System.Drawing.dll) и Windows Forms.
Вы сейчас имеете достаточно информации для того, чтобы продолжить исследование процесса разработки элементов управления Windows в .NET, но здесь следует учитывать еще один программный аспект: функциональные возможности режима проектирования. Перед тем как дать точное описание упомянутой проблемы, мы с вами должны обсудить роль пространства имен System.ComponentModel.
Пространство имен System.ComponentModel
Пространство имен System.ComponentModel определяет целый ряд атрибутов (и других типов), позволяющих описать то, как должны вести себя ваши элементы управления в режиме проектирования. Например, вы можете указать текстовое описание каждого свойства, определить событие, выбранное по умолчанию, или сгруппировать ряд свойств или событий в пользовательскую категорию, чтобы они отображались вместе в окне свойств Visual Studio 2005. Чтобы выполнить указанные модификации, вы должны использовать атрибуты, показанные в табл. 21.12.
Таблица 21.12. Подборка членов System.ComponentModel
Атрибут | Объекты применения | Описание |
---|---|---|
BrowsableAttribute | Свойства и события | Указывает, должно ли свойство или событие отображаться в окне обозревателя свойств. По умолчанию могут просматриваться все пользовательские свойства и события |
CategoryAttribute | Свойства и события | Указывает имя категории, к которой относится данное свойство или событие |
DescriptionAttribute | Свойства и события | Определяет небольшой фрагмент текста, который будет отображаться внизу окна свойств, когда пользователь выбирает данное свойство или событие |
DefaultPropertyAttribute | Свойства | Указывает свойство, используемое для данного компонента по умолчанию. Это свойство выбирается в окне свойств, когда пользователь выбирает данный элемент управления |
DefaultValueAttribute | Свойства | Определяет значение по умолчанию для данного свойства, которое будет применено при "переустановке" данного элемента управления в среде разработки |
DefaultEventAttribute | События | Указывает событие, используемое для данного компонента по умолчанию. Когда программист выполняет двойной щелчок на элементе управления, автоматически генерируется программный код заглушки для события, используемого по умолчанию |