ListBox.OnDrawItem メソッド
DrawItem イベントを発生させます。
Protected Overridable Sub OnDrawItem( _
ByVal e As DrawItemEventArgs _)
[C#]
protected virtual void OnDrawItem(DrawItemEventArgse);
[C++]
protected: virtual void OnDrawItem(DrawItemEventArgs* e);
[JScript]
protected function OnDrawItem(
e : DrawItemEventArgs);
パラメータ
- e
イベント データを格納している DrawItemEventArgs 。
解説
イベントが発生すると、デリゲートを使用してイベント ハンドラが呼び出されます。詳細については、「 イベントの発生 」を参照してください。
OnDrawItem メソッドを使用すると、デリゲートを結び付けずに、派生クラスでイベントを処理させることもできます。派生クラスでイベントを処理する場合は、この手法をお勧めします。
継承時の注意: 派生クラスで OnDrawItem をオーバーライドする場合は、登録されているデリゲートがイベントを受け取ることができるように、基本クラスの OnDrawItem メソッドを呼び出してください。
使用例
[Visual Basic, C#, C++] オーナー描画の ListBox 項目を作成する方法を次の例に示します。このコードでは、 DrawMode プロパティを使用して、描画する項目が固定サイズであることを示し、 DrawItem イベントを使用して、 ListBox への各項目の描画を実行しています。この例のコードでは、イベント ハンドラへのパラメータとして渡された DrawItemEventArgs クラスのプロパティとメソッドを使用して項目を描画しています。この例は、 listBox1
という名前の ListBox コントロールがフォームに既に追加されていて、 DrawItem イベントがこの例のコードに定義されているイベント ハンドラで処理されることを前提にしています。この例では、"Apple"、"Orange"、"Plum" の 3 つのテキストの項目がこの順番で ListBox に追加されていることも想定しています。
Private Sub listBox1_DrawItem(ByVal sender As System.Object, ByVal e As System.Windows.Forms.DrawItemEventArgs) Handles ListBox1.DrawItem
' Set the DrawMode property to draw fixed sized items.
ListBox1.DrawMode = DrawMode.OwnerDrawFixed
' Draw the background of the ListBox control for each item.
e.DrawBackground()
' Create a new Brush and initialize to a Black colored brush by default.
Dim myBrush As Brush
' Determine the color of the brush to draw each item based on the index of the item to draw.
Select Case (e.Index)
Case 0
myBrush = Brushes.Red
Case 1
myBrush = Brushes.Orange
Case 2
myBrush = Brushes.Purple
End Select
' Draw the current item text based on the current Font and the custom brush settings.
e.Graphics.DrawString(ListBox1.Items(e.Index), e.Font, myBrush, New RectangleF(e.Bounds.X, e.Bounds.Y, e.Bounds.Width, e.Bounds.Height))
' If the ListBox has focus, draw a focus rectangle around the selected item.
e.DrawFocusRectangle()
End Sub
[C#]
private void listBox1_DrawItem(object sender, System.Windows.Forms.DrawItemEventArgs e)
{
// Set the DrawMode property to draw fixed sized items.
listBox1.DrawMode = DrawMode.OwnerDrawFixed;
// Draw the background of the ListBox control for each item.
e.DrawBackground();
// Create a new Brush and initialize to a Black colored brush by default.
Brush myBrush = Brushes.Black;
// Determine the color of the brush to draw each item based on the index of the item to draw.
switch (e.Index)
{
case 0:
myBrush = Brushes.Red;
break;
case 1:
myBrush = Brushes.Orange;
break;
case 2:
myBrush = Brushes.Purple;
break;
}
// Draw the current item text based on the current Font and the custom brush settings.
e.Graphics.DrawString(listBox1.Items[e.Index].ToString(), e.Font, myBrush,e.Bounds,StringFormat.GenericDefault);
// If the ListBox has focus, draw a focus rectangle around the selected item.
e.DrawFocusRectangle();
}
[C++]
private:
void listBox1_DrawItem(Object* /*sender*/, System::Windows::Forms::DrawItemEventArgs* e)
{
// Set the DrawMode property to draw fixed sized items.
listBox1->DrawMode = DrawMode::OwnerDrawFixed;
// Draw the background of the ListBox control for each item.
e->DrawBackground();
// Create a new Brush and initialize to a Black colored brush by default.
Brush* myBrush = Brushes::Black;
// Determine the color of the brush to draw each item based on the index of the item to draw.
switch (e->Index)
{
case 0:
myBrush = Brushes::Red;
break;
case 1:
myBrush = Brushes::Orange;
break;
case 2:
myBrush = Brushes::Purple;
break;
}
// Draw the current item text based on the current Font and the custom brush settings.
e->Graphics->DrawString(
listBox1->Items->Item[e->Index]->ToString(),
e->Font, myBrush,
RectangleF::op_Implicit(e->Bounds),
StringFormat::GenericDefault);
// If the ListBox has focus, draw a focus rectangle around the selected item.
e->DrawFocusRectangle();
}
[JScript] JScript のサンプルはありません。Visual Basic、C#、および C++ のサンプルを表示するには、このページの左上隅にある言語のフィルタ ボタン をクリックします。
必要条件
プラットフォーム: Windows 98, Windows NT 4.0, Windows Millennium Edition, Windows 2000, Windows XP Home Edition, Windows XP Professional, Windows Server 2003 ファミリ
参照
ListBox クラス | ListBox メンバ | System.Windows.Forms 名前空間 | DrawItem