Программирование мобильных устройств на платформе .NET Compact Framework (Салмре) - страница 564

> 'Выполнить рисование

> '-------------------

> myGfx.FillRectangle(m_brushBlue, 2, 2, 100, 100)

> myGfx.DrawString("PaintCount: " + CStr(m_paintCount), _

>  Me.Font, m_brushYellow, 3, 3)


> 'Выход: Объекты, для которых мы должны были бы вызывать метод

> '.Dispose(), отсутствуют.

>End Sub

Листинг 11.9. Простой пользовательский элемент управления, который изменяет цвета и запускает событие, определяемое пользователем

>'Простейший пользовательский элемент управления

>Public Class myButton

>Inherits System.Windows.Forms.Control

>'--------------------------------------

>'Объекты, необходимые нам для рисования

>'--------------------------------------

>Private m_RectangleBrush As System.Drawing.Brush

>Private m_TextBrush As System.Drawing.Brush

>Private m_RectangleColor As System.Drawing.Color


>'------------------------------------------------------------------------

>'Событие, которое мы хотим предоставить на обработку. Это - общедоступный

>'делегат.

>'------------------------------------------------------------------------

>Public Event EventButtonTurningBlue(ByVal sender As Object, _

> ByVal e As System.EventArgs)


> 'Конструктор

> Public Sub New()

>  MyBase.New()


>  'ПРИМЕЧАНИЕ: Мы должны написать функцию "Dispose()" и

>  'деструктор, который освобождает память от этих объектов

>  'Создать необходимые кисти

>  m_RectangleColor = System.Drawing.Color.Black

>  m_RectangleBrush = New System.Drawing.SolidBrush( _

>   m_RectangleColor)

>  m_TextBrush = New System.Drawing.SolidBrush( _

>   System.Drawing.Color.White)

>End Sub


>'-----------------------------------------------

>'Внутренним откликом на щелчок является

>'повторение трех различных цветов кнопки в цикле

>'-----------------------------------------------

>Protected Overrides Sub OnClick(ByVal e As System.EventArgs)


> '--------------------------------------------------------

> 'Важно: Вызвать базовую реализацию. Это

> 'обеспечит возможность вызова любого обработчика событий,

> 'подключенного к данному элементу управления

> '--------------------------------------------------------

> MyBase.OnClick (e)


> '------------------------------------------------------

> 'Выбрать цвет новой кисти, исходя из цвета старой кисти

> '------------------------------------------------------

> If (m_RectangleColor.Equals(System.Drawing.Color.Black)) Then

>  m_RectangleColor = System.Drawing.Color.Blue

>  '!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!

>  'Запустить событие!

>  '!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!

>  'Возбудить событие без передачи аргумента

>  RaiseEvent EventButtonTurningBlue(Me, Nothing)

> ElseIf (m_RectangleColor.Equals(System.Drawing.Color.Blue)) Then