Чтение онлайн

на главную - закладки

Жанры

ЯЗЫК ПРОГРАММИРОВАНИЯ С# 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.

Тестирование CarControl в испытательном контейнере

Установив для свойства 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 с помощью окна свойств).

public partial class MainForm: Form {

 public MainForm {

InitializeComponent;

lblCurrentitSpeed.Text = string.Format("Текущая скорость: {0}", this.myCarControl.Speed.ToString);

numericUpDownCarSpeed.Value = myCarControl1.Speed;

 }

 private void numericUpDownCarSpeed_ValueChanged(object sender, EventArgs e) {

// Предполагается, что минимум NumericUpDown равен 0,

// а максимум - 300.

this.myCarControl.Speed = (int)numericUpDownCarSpeed.Value;

lblCurrentSpeed.Text = string.Format("Текущая
скорость: {0}", this.myCarControl.Speed.ToString);

 }

 private void myCarControl_AboutToBlow(string msg) {

lblEventData.Text = string.Format("Данные события: {0}", msg);

 }

 private void myCarControl_BlewUp(string msg) {

lblEventData.Text = string.Format("Данные событий: {0}", msg);

 }

}

Теперь вы можете запустить ваше приложение клиента на выполнение и проверить его взаимодействие с 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 События Указывает событие, используемое для данного компонента по умолчанию. Когда программист выполняет двойной щелчок на элементе управления, автоматически генерируется программный код заглушки для события, используемого по умолчанию
Поделиться:
Популярные книги

Кодекс Крови. Книга IV

Борзых М.
4. РОС: Кодекс Крови
Фантастика:
фэнтези
попаданцы
аниме
5.00
рейтинг книги
Кодекс Крови. Книга IV

Девятый

Каменистый Артем
1. Девятый
Фантастика:
боевая фантастика
попаданцы
9.15
рейтинг книги
Девятый

Кодекс Охотника. Книга XII

Винокуров Юрий
12. Кодекс Охотника
Фантастика:
боевая фантастика
городское фэнтези
аниме
7.50
рейтинг книги
Кодекс Охотника. Книга XII

Его маленькая большая женщина

Резник Юлия
Любовные романы:
современные любовные романы
эро литература
8.78
рейтинг книги
Его маленькая большая женщина

Саженец

Ланцов Михаил Алексеевич
3. Хозяин дубравы
Фантастика:
попаданцы
альтернативная история
фэнтези
5.00
рейтинг книги
Саженец

Свет во мраке

Михайлов Дем Алексеевич
8. Изгой
Фантастика:
фэнтези
7.30
рейтинг книги
Свет во мраке

(Не)свободные, или Фиктивная жена драконьего военачальника

Найт Алекс
Любовные романы:
любовно-фантастические романы
5.00
рейтинг книги
(Не)свободные, или Фиктивная жена драконьего военачальника

Вамп

Парсиев Дмитрий
3. История одного эволюционера
Фантастика:
рпг
городское фэнтези
постапокалипсис
5.00
рейтинг книги
Вамп

Инвестиго, из медика в маги 2

Рэд Илья
2. Инвестиго
Фантастика:
фэнтези
попаданцы
аниме
5.00
рейтинг книги
Инвестиго, из медика в маги 2

Последняя Арена 4

Греков Сергей
4. Последняя Арена
Фантастика:
рпг
постапокалипсис
5.00
рейтинг книги
Последняя Арена 4

Хозяин Теней 2

Петров Максим Николаевич
2. Безбожник
Фантастика:
попаданцы
аниме
фэнтези
5.00
рейтинг книги
Хозяин Теней 2

Идеальный мир для Лекаря 8

Сапфир Олег
8. Лекарь
Фантастика:
юмористическое фэнтези
аниме
7.00
рейтинг книги
Идеальный мир для Лекаря 8

Неудержимый. Книга XI

Боярский Андрей
11. Неудержимый
Фантастика:
фэнтези
попаданцы
аниме
5.00
рейтинг книги
Неудержимый. Книга XI

Двойник Короля 2

Скабер Артемий
2. Двойник Короля
Фантастика:
попаданцы
аниме
фэнтези
фантастика: прочее
5.00
рейтинг книги
Двойник Короля 2