Читать «ЯЗЫК ПРОГРАММИРОВАНИЯ С# 2005 И ПЛАТФОРМА .NET 2.0. 3-е издание» онлайн - страница 546
Эндрю Троелсен
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 | События | Указывает событие, используемое для данного компонента по умолчанию. Когда программист выполняет двойной щелчок на элементе управления, автоматически генерируется программный код заглушки для события, используемого по умолчанию |