* При перепечатке материалов ссылка на www.SeoLiga.ru обязательна! RSS



Создание производных элементов управления
8 февраля 2009

Производный элемент управления содержит всю функциональность своего базово-
го класса, а также ряд дополнительных возможностей. Чтобы создать производный
элемент управления, необходимо указать для него базовый класс, например класс
стандартного элемента управления Windows Forms. Новый элемент управления,
созданный таким образом, сохранит внешний вид и поведение своего предка. Ниже
показан пример создания элемента управления, производного от Button;
Visual Basic .NET
Public Class myButton
Inherits System. Windows. Forms. Button
Остальной код опущен.
End Class
Visual C#
public class myButton : System. Windows. Forms. Button
{
// Остальной код опущен.
!
Реализация новых возможностей в производных элементах управления
Как правило, к производным элементам управления прибегают, когда требуется ре-
ализовать в них дополнительные функции, отсутствующие у стандартных элемен-
тов управления Windows Forms. Для этого к производным элементам управления
добавляют новый код либо переопределяют члены, унаследованные от базового
класса. Предположим, что разработчику требуется создать текстовое поле, куда
пользователь сможет вводить только числа. Для этого необходимо переопределить
метод OnKeyPress следующим образом:
Visual Basic .NET
Public Class NumberBox
Inherits System. Windows. Forms. TextBox
Protected Overrides Sub CmKeyPress(ByVal e As KeyPressEventArgs)
If Char.IsNumber(e.KeyChar) = False Then
e. Handled = True
End If
End Sub
End Class
Visual C#
public class NumberBox : System.Windows.Forms.TextBox
protected override void QnKeyPress(KeyPressEventArgs e)
if (char.IsNumber(e.KeyChar) =- false)
e.Handled = true;
\
Модификация внешнего вида существующих элементов управления
Другая причина, по которой создают производные элементы управления, — их не-
стандартный внешний вид. Чтобы изменить стиль оформления существующего эле-
мента управления, переопределите метод OnPaint, поместив в него собственный код.
Например, чтобы изменить форму элемента управления, установите соответствую-
щим образом его свойство Region в методе OnPaint. Класс Region, подобно Graphics-
Path, описывает область экрана заданной формы, его получают из класса Graphics-
Path. Так, можно сгенерировать класс GraphicsPath, представляющий форму вашего
элемента управления, создать на его основе объект Region и поместить тот в соот-
ветствующее свойство элемента управления. Этот прием иллюстрируется на при-
мере создания кнопки в форме текста:
Visual Basic .NET
Public Class WowButton
Inherits System.Windows,Forms.Buttor
Protected Overrides Sub OnPaint(ByVal pe As PaintEventArgs)
Dim rnyPath As New Drawing2D.GraphicsPath()
1 Создать объект GraphicsPath и установить свойства FontFamily
и FontStyle элемента управления так, чтобы GraphicsPath представлял
контуры строки символов размером 72 пункта.
myPatn.AddString("Wow!", Font.FontFamily, Font.Style, 72, New _
PointFCO, 0). StringFormat.GenericDefault)
Создать на основе GraphicsPath новый объект Region.
Dim myRegion As New Region(myPath)
Поместить новый объект Region в одноименное свойство
элемента управления,
Me.Region = myRegion
End Sub
End Class
Visual C#
public class WowButton : System.Windows.Forms.Button
protected override void OnPaintfPaintEventArgs pe)
;
System. Drawing. Drawing2D.GraphicsPath niyPath = new
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. Реализуйте все необходимые нестандартные возможности и добавьте код, фор-
мирующий интерфейс производного элемента управления.

Теги: .NET

Статьи по теме:

Применение методов формы
Подключение к БД
Вложенные элементы управления и контейнеры
Графический дизайнер
Карринг (currying)
Тестирование элемента управления
Окна Locals, Autos и Watch
Объявление методов
Модификаторы доступа к типам
Создание класса строго типизированного набора на основе класса CollectionBase
Свойства, доступные только для чтения или только для записи
Получение доступа к членам базового класса
Примеси (mixin)
Форматирование, зависимое от культуры
Типы данных .NET Framework
| .NET | Pavel |
 


Пн Вт Ср Чт Пт Сб Вс
1 2 3 4 5
6 7 8 9 10 11 12
13 14 15 16 17 18 19
20 21 22 23 24 25 26
27 28 29 30 31


     



Rambler's Top100

Данный сайт или домен продается ICQ: 403-353-727

© 2009 Seoliga.ru | .NET | Создание производных элементов управления. Регион сайта: Москва и Санкт-Петербург