ListBox.DrawItem イベント

定義

オーナー描画 ListBox のビジュアルな部分を変更すると発生します。

public:
 event System::Windows::Forms::DrawItemEventHandler ^ DrawItem;
public event System.Windows.Forms.DrawItemEventHandler DrawItem;
public event System.Windows.Forms.DrawItemEventHandler? DrawItem;
member this.DrawItem : System.Windows.Forms.DrawItemEventHandler 
Public Custom Event DrawItem As DrawItemEventHandler 

イベントの種類

次のコード例は、所有者描画 ListBox 項目を作成する方法を示しています。 このコードでは、 プロパティを DrawMode 使用して、描画される項目のサイズを固定し、 イベントを DrawItem 使用して各項目の への描画を ListBox実行します。 このコード例では、イベント ハンドラーにパラメーターとして渡されるクラスの DrawItemEventArgs プロパティとメソッドを使用して、項目を描画します。 この例では、 ListBox という listBox1 コントロールがフォーム DrawItem に追加され、そのイベントがサンプル コードで定義されているイベント ハンドラーによって処理される必要があります。 また、この例では、"Apple"、"Orange"、および "Plum" のテキストをその順序で に項目が追加 ListBox されている必要があります。

private ListBox ListBox1 = new ListBox();
private void InitializeListBox()
{
    ListBox1.Items.AddRange(new Object[] 
        { "Red Item", "Orange Item", "Purple Item" });
    ListBox1.Location = new System.Drawing.Point(81, 69);
    ListBox1.Size = new System.Drawing.Size(120, 95);
    ListBox1.DrawMode = DrawMode.OwnerDrawFixed;
    ListBox1.DrawItem += new DrawItemEventHandler(ListBox1_DrawItem);
    Controls.Add(ListBox1);
}

private void ListBox1_DrawItem(object sender, 
    System.Windows.Forms.DrawItemEventArgs e)
{
    // Draw the background of the ListBox control for each item.
    e.DrawBackground();
    // Define the default color of the brush as black.
    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();
}
Private WithEvents ListBox1 As New ListBox()

Private Sub InitializeListBox() 
    ListBox1.Items.AddRange(New Object() _
        {"Red Item", "Orange Item", "Purple Item"})
    ListBox1.Location = New System.Drawing.Point(81, 69)
    ListBox1.Size = New System.Drawing.Size(120, 95)
    ListBox1.DrawMode = DrawMode.OwnerDrawFixed
    Controls.Add(ListBox1)

End Sub

Private Sub ListBox1_DrawItem(ByVal sender As Object, _
 ByVal e As System.Windows.Forms.DrawItemEventArgs) _
 Handles ListBox1.DrawItem

    ' Draw the background of the ListBox control for each item.
    e.DrawBackground()

    ' Define the default color of the brush as black.
    Dim myBrush As Brush = Brushes.Black

    ' 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).ToString(), _
        e.Font, myBrush, e.Bounds, StringFormat.GenericDefault)

    ' If the ListBox has focus, draw a focus rectangle around  _ 
    ' the selected item.
    e.DrawFocusRectangle()
End Sub

注釈

このイベントは、所有者が描画 ListBoxした によって使用されます。 イベントは、 プロパティが または DrawMode.OwnerDrawVariableDrawMode.OwnerDrawFixed設定されている場合DrawModeにのみ発生します。 このイベントを使用して、 内の項目を描画するために必要なタスクを ListBox実行できます。 項目を描画する前に、可変サイズの DrawMode 項目がある場合 (プロパティが に DrawMode.OwnerDrawVariable設定されている場合)、 MeasureItem イベントが発生します。 イベントのイベント ハンドラーを MeasureItem 作成して、イベントのイベント ハンドラーで描画するアイテムのサイズを DrawItem 指定できます。

イベントの処理の詳細については、「処理とイベントの発生」を参照してください。

適用対象

こちらもご覧ください