构成控件

组成用户控件的控件(也称作“构成控件”)在自定义图形呈现时的灵活性相对较差。 所有 Windows 窗体控件都通过各自的 OnPaint 方法处理自己的呈现。 由于这种方法是受保护的,开发人员无法访问它,因此在绘制控件时必定会执行。 然而,这并不意味着不能添加影响构成控件外观的代码。 附加呈现可以通过添加事件处理程序来完成。 例如,假设正在创作一个 UserControl 控件,该控件有一个名为 MyButton 的按钮。 如果想要获取 Button 类无法提供的附加呈现,则要将类似于以下内容的代码添加到用户控件中:

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 窗体控件(如 TextBox)是由 Windows 直接绘制的。 在这些情况中,永远不调用 OnPaint 方法,因此永远不会调用上面的示例。

上例创建一个在每次执行 MyButton.Paint 事件时执行的方法,用于将附加的图形化表示形式添加到控件中。 请注意,这并不妨碍 MyButton.OnPaint 的执行,因此,除了自定义绘制外,仍将执行通常由某个按钮执行的所有绘制操作。 有关 GDI+ 技术和自定义呈现的详细信息,请参见用 GDI+ 创建图形图像。 如果想要控件具有唯一的表示形式,则最好创建一个继承的控件,为它编写自定义呈现代码。 有关详细信息,请参见用户描述的控件

请参见

任务

如何:创建用于绘制的 Graphics 对象

参考

UserControl

OnPaint

概念

用户描述的控件

各种自定义控件