
- •Visual Basic .Net
- •Visual Basic .Net
- •Visual c#
- •314 Создание элементов управления с помощью .Net Framework Глава 7
- •Visual Basic .Net
- •Visual c#
- •Visual Basic .Net
- •Visual c#
- •Visual Basic .Net
- •Visual c#
- •Visual Basic .Net
- •Visual c#
- •Visual Basic .Net
- •Visual c#
- •Visual Basic .Net
- •Visual c#
- •Visual Basic .Net
- •Visual c#
- •Visual c#
- •Visual Basic .Net
- •Visual c#
- •Visual Basic .Net
- •Visual c#
- •Visual Basic .Net
- •Visual c#
- •Visual Basic .Net
- •Visual c#
- •Visual Basic .Net
- •Visual c#
- •Visual Basic .Net
- •Visual c#
- •Visual Basic .Net
- •Visual c#
- •Visual Basic .Net
- •Visual c#
- •Visual Basic .Net
- •Visual c#
- •Visual Basic .Net
- •Visual c#
- •Visual Basic .Net
- •2. В окне New Project выберите шаблон Windows Application, назовите новый про-
- •3. В меню Project выберите команду Add New Item — откроется одноименное диа-
- •4. В диалоговом окне Add New Item выберите Custom Control, назовите новый эле-
- •5. В окне Solution Explorer щелкните правой кнопкой элемент управления Pretty-
- •1. В окне редактора кода поместите в начало кода следующие операторы, импор-
- •Visual c#
- •Visual Basic .Net
Visual c#
public class WowButton : System.Windows.Forms.Button
protected override void OnPaintfPaintEventArgs pe)
;
System. Drawing. Drawing2D.GraphicsPath niyPath = new
Занятие 2 Создание элементов управления ^25
System.Drawing.Drawing2D.GraphicsPath():
// Следующая команда устанавливает свойства FontFarriily л FontStyln
// элемента управления гак, чтобы объект GraphicsPath представлял
// контур^ строки символов размером 72 пункта. Учтите: в Си необходимо
// явно преобразовать значение Font.Style в целое число,
myPath.AddStringC'Wow!", Font.FontFamily, (int)Font.Style. 72.
new PointFfQ, 0), StringFormat.GenericDefaiilt):
// Создать на основе GraphicsPath новый объект Region.
Region rcyRegion = new Region(myPath);
// Поместить новый объект Region в одноименное свойство
// элемента управления.
this.Region ~ myRegion;
:
!
Заметьте; WowBulton — это не прямоугольная кнопка с прозрачным фоном, ото-
бражающая крупные буквы, она действительно имеет форму букв, составляющих
слово ≪Wow!≫. Чтобы ее щелкнуть, необходимо попасть в область, ограниченную
контуром букв. Сходным образом изменяют форму обычных элементов управле-
ния, чтобы получить элементы пользовательского интерфейса с нестандартным
видом.
Примечание Прорисовка некоторых элементов управления, таких, как Text Box, вы-
полняется не самим элементом управления, а формой, на которой он располагает-
ся. Такие элементы управления никогда не генерируют событие Paint, поэтому от-
вечающий за визуализацию код. помещенный в обработчик этого события, вызван
не будет.
> Создание производного элемента управления
1. Объявите новый класс элемента управления на основе существующего класса
элемента управления.
2. Реализуйте все необходимые нестандартные возможности и добавьте код, фор-
мирующий интерфейс производного элемента управления.
Создание составных элементов управления
Пользовательские, или составные, элементы управления объединяют нестандарт-
ные возможности с функциональностью стандартных элементов управления Windows
Forms, позволяя быстро создавать новые элементов управления. Пользователь-
ский элемент управления состоит из одного или нескольких стандартных элемен-
тов управления, объединенных в группу. Дизайнер UserControl предназначен для
добавления к составным элементам управления дочерних элементов управления,
также называемых вложенными. На рис. 7-1 показан дизайнер UserControl, в кото-
ром открыт составной элемент управления с парой вложенных кнопок и текстовым
полем.
12-786
326 Создание элементов управления с помощью .NET Framework Глава 7
iV:* I rotmi.rf IJM≫ControU.cs |De≫gnI*
P *: . ' .' .:..;'• ': . . П
6Ы10П1 Г ДехШок!
Рис. 7-1. Дизайнер UserControl
Разработчик может написать собственный код для обработки событий, генери-
руемых вложенными элементами управления. Предположим, что вам требуется со-
здать пользовательский элемент управления, который состоит из двух текстовых
полей и надписи. При изменении значений любого из текстовых полей этот эле-
мент управления должен автоматически складывать их и отображать сумму в над-
писи. Подобную функциональность удается реализовать, переопределив методы Ол-
KeyPress вложенных текстовых полей следующим образом: