
- •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 Basic .Net
Для события KeyPress элемента управления TextBoxS
нужно создать аналогичный обработчик,
Private Sib TextBox1_KeyPress(ByVal Sender As Object, ByVal e As
KeyPressEventArgs) Handles TextBoxl.KeyPress
1 Проверить, является ли нажатая клавиша цифровой,
If Char.IsNumber(e.KeyChar) = False Then
e.Handled - True
End If
LabeU.Text = (Integer. Parse(TextBox1 .Text) +
Integer.Parse(TextBox2.TexT)).ToString()
End Sub
Visual c#
// Для события KeyPress элемента управления TextBox2
// нужно создать аналогичный обработчик.
protected override void OnKeyPress(object sender, KeyPressEventArgs e)
{
// Проверить, является ли нажатая клавиша цифровой.
if (char.lsNumber(e.KeyChar) == false)
e.Handled - true;
LabeU.Text = (int.Parse(TextBox1.Text) +
int.Parse(Tex:Box2.Text)).ToString();
}
Вложенные компоненты составных элементов управления считаются закрыты-
ми. Поэтому ни один разработчик, которому случится работать с вашим элементом
управления, не сможет изменить такие свойства его вложенных элементов управле-
ния, как цвет, форма и размер. Чтобы разрешить другим разработчикам изменять
Занятие 2 Создание элементов управления 327
свойства вложенных элементов управления, сделайте их доступными через свой-
ства объекта составного элемента управления. Рассмотрим составной элемент уп-
равления с вложенной кнопкой (Button 1). Чтобы предоставить доступ к свойству
BackColor объекта Button], создайте, например, для него свойство-оболочку у объек-
та элемента управления, как показано ниже:
Visual Basic .Net
Это свойство, объявленное в классе составного элемента управления.
Public Property ButtonColor() As Color
Get
Return Button"!. BackColor
End Get
Set(ByVal Value As Color)
Buttonl. BackColor = Value
End Set
End Property
Visual c#
public color ButtonColor
{
get
{
return Buttonl. BackColor:
}
set
{
Buttonl. BackColor = value;
Чтобы предоставить доступ к вложенному элементу управления, измените его
свойство Modifiers. Это возможно только через окно Properties в период разработки,
поскольку в период выполнения оно не существует, Свойство Modifiers позволяет
задать любой уровень доступа, который применяется к соответствующему вложен-
ному элементу управления.
^ Как создать составной элемент управления
1. Объявите класс, производный от UserControl.
2. Вызовите дизайнер UserControl и добавьте с его помощью вложенные элементы
управления Windows Forms, после чего соответствующим образом настройте их.
3. При необходимости сделайте доступными свойства вложенных элементов упра-
вления.
4. Реализуйте нестандартные возможности, необходимые составному элементу
управления.
Создание формируемых элементов управления
Формируемые элементы управления предоставляют максимум возможностей по на-
стройке и управлению своей функциональностью, но их разработка занимает боль-
328 Создание алиментов управления с помощью .NET Framework Глава 7
ше всего времени. Поскольку базовый класс Control не предоставляет своим потом-
кам даже базового графического интерфейса, разработчику придется самостоятель-
но писать весь код, формирующий облик такого элемента управления. Если интер-
фейс сложный, его создание занимает львиную долю цикла разработки элемента
управления.
Процесс визуализации элемента управления в клиентской области формы на-
зывается прорисовкой. Получив команду на прорисовку, элемент управления гене-
рирует событие Paint, при этом исполняются все обработчики события Paint. У клас-
са Control обработчиком по умолчанию для события Paint является метод OnPaint.
Метод OnPaint принимает единственный аргумент — экземпляр класса Paint-
EventArgs, содержащий информацию клиентской области элемента управления. Сто-
ит обратить внимание на два члена этого класса — Graphics и Clip Rectangle.
Graphics — это объект типа Graphics, представляющий клиентскую область эле-
мента управления. Ссылка на него необходима для формирования изображения
элемента управления. ClipRectangle — прямоугольник, представляющий доступную
клиентскую область элемента управления. При первом отображении элемента упра-
вления ClipRectangle ограничивает занятую им область. Если она перекрывается с
другими элементам управления, данный элемент может оказаться частично или
полностью скрытым. При повторной его прорисовке ClipRectangle представляет
только видимую область, которая должна быть перерисована. Именно поэтому не
рекомендуется определять размеры элемента управления по объекту ClipRectangle.
для этой цели следует применять свойство Size.
По умолчанию координаты отсчитываются от верхнего левого угла элемента уп-
равления, в котором располагается условная точка начала координат (0,0), они ис-
числяются в пикселах. Следующий пример демонстрирует простой метод OnPaint,
выполняющий прорисовку нестандартного элемента управления в виде красного
эллипса: