組成控制項

進行自訂圖形轉譯時,構成使用者控制項的控制項或所謂的「組成控制項」較不具彈性。 所有 Windows Forms 控制項都會透過自己的 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 Forms 控制項,例如 TextBox ,會直接由 Windows 繪製。 在這些實例中 OnPaint ,永遠不會呼叫 方法,因此永遠不會呼叫上述範例。

這會建立每次執行 MyButton.Paint 事件時都會執行的方法,進而將其他圖形呈現新增至控制項。 請注意,這並不會防止執行 MyButton.OnPaint,因此,除了您的自訂繪製之外,仍然會執行通常透過按鈕所執行的所有繪製。 如需 GDI+ 技術和自訂轉譯的詳細資訊,請參閱使用 GDI+ 建立圖形影像。 如果您想要有控制項的唯一呈現,則最好的做法就是建立繼承的控制項,以及撰寫其自訂轉譯程式碼。 如需詳細資訊,請參閱使用者自訂描繪控制項

另請參閱