> 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
>'----------------------------------------------
>'Эта функция подключается для обработки событий