内在コントロール
ユーザー コントロールを構成するコントロール ("内在コントロール" と呼ばれます) は、カスタム グラフィックスのレンダリングに関してはそれほど柔軟ではありません。 すべての Windows フォーム コントロールによって、独自の OnPaint メソッドを使ってそれぞれのレンダリングを処理します。 このメソッドは保護されているため、開発者はアクセスできず、したがってコントロールが描画されるときに実行を防ぐことはできません。 ただし、これは、内在コントロールの外観に影響を与えるコードを追加できないという意味ではありません。 イベント ハンドラーを追加することで、追加のレンダリングを実現できます。 たとえば、MyButton
というボタンで UserControl を作成していたとします。 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.
}
注意
TextBox などの一部の Windows フォーム コントロールは、Windows によって直接描画されます。 これらのインスタンスでは、OnPaint メソッドは呼び出されません。したがって、上記の例は呼び出されません。
この例は、MyButton.Paint
イベントが実行されるたびに実行するメソッドを作成し、それによって追加のグラフィカル表示をコントロールに追加します。 これにより MyButton.OnPaint
の実行は妨げられないので、カスタム描画に加えて、ボタンによって通常実行されるすべての描画が実行されることに注意してください。 GDI+ テクノロジとカスタム レンダリングについて詳しくは、「Creating Graphical Images with GDI+」 (GDI+ でのグラフィカル イメージの作成) をご覧ください。 コントロールの表示を独自のものにしたい場合の最善の方法は、継承コントロールを作成し、カスタム レンダリング コードをそこに記述するというものです。 詳しくは、「ユーザー描画コントロール」をご覧ください。
関連項目
.NET Desktop feedback