ListBox.OnDrawItem(DrawItemEventArgs) ListBox.OnDrawItem(DrawItemEventArgs) ListBox.OnDrawItem(DrawItemEventArgs) ListBox.OnDrawItem(DrawItemEventArgs) Method

定義

DrawItem イベントを発生させます。Raises the DrawItem event.

protected:
 virtual void OnDrawItem(System::Windows::Forms::DrawItemEventArgs ^ e);
protected virtual void OnDrawItem (System.Windows.Forms.DrawItemEventArgs e);
abstract member OnDrawItem : System.Windows.Forms.DrawItemEventArgs -> unit
override this.OnDrawItem : System.Windows.Forms.DrawItemEventArgs -> unit
Protected Overridable Sub OnDrawItem (e As DrawItemEventArgs)

パラメーター

e
DrawItemEventArgs DrawItemEventArgs DrawItemEventArgs DrawItemEventArgs

処理するウィンドウ メッセージを表す、参照渡しされた DrawItemEventArgsA DrawItemEventArgs that contains the event data.

次のコード例は、オーナー描画ListBoxの項目を作成する方法を示しています。The following code example demonstrates how to create owner-drawn ListBox items. このコードではDrawMode 、プロパティを使用して、描画された項目DrawItemが固定サイズであることを指定し、 ListBoxイベントを使用して各項目の描画を実行します。The code uses the DrawMode property to specify that the items drawn are fixed sized and the DrawItem event to perform the drawing of each item into the ListBox. このコード例では、イベントハンドラーにパラメーター DrawItemEventArgsとして渡されたクラスのプロパティとメソッドを使用して、項目を描画します。The example code uses the properties and methods of the DrawItemEventArgs class passed as a parameter to the event handler to draw the items. この例では、 ListBoxというlistBox1コントロールがフォームに追加されておりDrawItem 、このコード例で定義されているイベントハンドラーによってイベントが処理される必要があります。This example requires that a ListBox control called listBox1 has been added to a form and that the DrawItem event is handled by the event handler defined in the example code. また、この例では、"Apple"、 ListBox "オレンジ"、および "Plum" のテキストをこの順序で使用して、に項目が追加されている必要もあります。The example also requires that items have been added to the ListBox with the text of "Apple", "Orange", and "Plum" in that order.

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

注釈

イベントを発生させると、イベント ハンドラーがデリゲートから呼び出されます。Raising an event invokes the event handler through a delegate. 詳細については、次を参照してください。処理とイベントの発生します。For more information, see Handling and Raising Events.

またOnDrawItem 、メソッドは、派生クラスがデリゲートをアタッチせずにイベントを処理できるようにします。The OnDrawItem method also enables derived classes to handle the event without attaching a delegate. 派生クラスでイベントを処理する場合は、この手法をお勧めします。This is the preferred technique for handling the event in a derived class.

注意 (継承者)

派生クラスで OnDrawItem(DrawItemEventArgs) をオーバーライドする場合は、登録されているデリゲートがイベントを受け取ることができるように、基本クラスの OnDrawItem(DrawItemEventArgs) メソッドを呼び出してください。When overriding OnDrawItem(DrawItemEventArgs) in a derived class, be sure to call the base class's OnDrawItem(DrawItemEventArgs) method so that registered delegates receive the event.

適用対象

こちらもご覧ください