构成控件

组成用户控件的控件(也称作“构成控件”)在自定义图形呈现方面的灵活性相对较差。 所有 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.  
}  

注意

某些 Windows 窗体控件(如 TextBox)由 Windows 直接绘制。 在这些情况下,永远不会调用 OnPaint 方法,因此永远不会调用上面的示例。

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

另请参阅