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

>  m_RectangleColor = System.Drawing.Color.Red

> Else

>  m_RectangleColor = System.Drawing.Color.Black

> End If


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

> 'Освободить старую кисть

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

> m_RectangleBrush.Dispose()


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

> 'Создать новую кисть, которую мы собираемся использовать для фона

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

> m_RectangleBrush = _

>  New System.Drawing.SolidBrush(m_RectangleColor)


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

> 'Сообщить операционной системе, что наш элемент управления

> 'должен быть перерисован, как только представится возможность

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

> Me.Invalidate()

>End Sub


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

>'Ради интереса подсчитаем, сколько раз осуществлялась перерисовка

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

>Private m_paintCount As Integer

>Protected Overrides Sub OnPaint( _

> ByVal e As System.Windows.Forms.PaintEventArgs)

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

> 'ВАЖНО: Вызвать базовый класс и позволить ему

> 'выполнить работу по рисованию

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

> MyBase.OnPaint(e)


> 'Увеличить на единицу значение счетчика вызовов

> m_paintCount = m_paintCount + 1


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

> 'Важно:

> 'Вместо того чтобы создавать объект Graphics, мы получаем его

> 'на время данного вызова. Это означает, что освобождать память путем вызова

> 'метода .Dispose() объекта - не наша забота

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

> Dim myGfx As System.Drawing.Graphics

> myGfx = e.Graphics


> 'Нарисовать прямоугольник

> myGfx.FillRectangle(m_RectangleBrush, 0, 0, _

>  Me.Width, Me.Height)


> 'Нарисовать текст

> myGfx.DrawString("Button! Paint: " + m_paintCount.ToString(), _

>  Me.Parent.Font, m_TextBrush, 0, 0)

>End Sub

>End Class

Листинг 11.10. Код, который должен быть помещен в форму для создания экземпляра пользовательского элемента управления

>'Наша новая кнопка

>Private m_newControl As myButton


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

>'Этот код будет подключен в качестве нашего обработчика событий

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

>Private Sub CallWhenButtonTurningBlue(ByVal sender As Object, _

> ByVal e As System.EventArgs)

> MsgBox("Кнопка становится синей!")

>End Sub


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

>'Эта функция подключается для обработки событий