Поделиться через


Составные элементы управления

Так называемые составные элементы управления (элементы управления, входящие в состав пользовательских элементов управления) являются не очень гибкими с точки зрения пользовательской отрисовки графики. Все элементы управления Windows Forms производят отрисовку, используя собственный метод OnPaint. Это защищенный метод, поэтому он недоступен разработчику, и его выполнение нельзя запретить при рисовании элемента управления. Однако это не означает, что нельзя добавить код, который будет изменять внешний вид составного элемента управления. Дополнительная отрисовка может выполняться путем добавления обработчика событий. Предположим, что разрабатывается элемент управления UserControl с кнопкой MyButton. При необходимости дополнительной отрисовки, помимо выполняемой классом Button Class, в пользовательский элемент управления можно добавить код следующим образом:

Public Sub MyPaint(ByVal sender as Object, e as PaintEventArgs) Handles _
   MyButton.Paint
   'Additional rendering code goes here
End Sub
// Add the event handler to the button's Paint event.
MyButton.Paint += 
   new System.Windows.Forms.PaintEventHandler (this.MyPaint);
// Create the custom painting method.
protected void MyPaint (object sender, 
System.Windows.Forms.PaintEventArgs e)
{
   // Additional rendering code goes here.
}
// Add the event handler to the button's Paint event.
MyButton.add_Paint(new 
System.Windows.Forms.PaintEventHandler(this.MyPaint));
// Create the custom painting method.
protected void MyPaint(System.Object sender,
   System.Windows.Forms.PaintEventArgs e)
{
// Additional rendering code goes here.
}

Примечание

Некоторые элементы управления Windows Forms, такие как TextBox, рисуются непосредственно операционной системой Windows.В этих экземплярах вызов метода OnPaint никогда не производится и, следовательно, приведенный выше код никогда не будет выполняться.

В данном примере создается метод, который выполняется каждый раз, когда выполняется событие MyButton.Paint. В результате к элементу управления добавляется дополнительное графическое представление. Обратите внимание, что это не запрещает выполнение MyButton.OnPaint, поэтому рисование, обычно выполняемое с помощью кнопки, по-прежнему будет выполняться наряду с рисованием, определенным пользователем. Дополнительные сведения о технологии GDI+ и пользовательской отрисовке см. в разделе Создание графических изображений с помощью GDI+. При необходимости получения уникального представления элемента управления лучше всего создать наследуемый элемент управления и записать для него пользовательский код отрисовки. Дополнительные сведения см. в разделе Элементы управления, разработанные пользователем.

См. также

Задачи

Практическое руководство. Создание объектов Graphics для рисования

Ссылки

UserControl

OnPaint

Основные понятия

Элементы управления, разработанные пользователем

Создание собственных элементов управления