ListBox.DrawItem ListBox.DrawItem ListBox.DrawItem ListBox.DrawItem Event

定義

發生於主控描繪 ListBox 的視覺外觀變更時。Occurs when a visual aspect of an owner-drawn ListBox changes.

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主控描繪專案。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. 此範例也需要將專案新增至ListBox , 並將該順序中的文字「Apple」、「橙色」和「梅紅」。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

備註

這個事件是由ListBox主控描繪所使用。This event is used by an owner-drawn ListBox. 只有當DrawMode屬性設定為DrawMode.OwnerDrawFixedDrawMode.OwnerDrawVariable時, 才會引發事件。The event is only raised when the DrawMode property is set to DrawMode.OwnerDrawFixed or DrawMode.OwnerDrawVariable. 您可以使用這個事件來執行在中ListBox繪製專案所需的工作。You can use this event to perform the tasks needed to draw items in the ListBox. 如果您有可變大小的專案 (當DrawMode屬性設定為DrawMode.OwnerDrawVariable時), 則在MeasureItem繪製專案之前, 會引發事件。If you have a variable-sized item (when the DrawMode property is set to DrawMode.OwnerDrawVariable), before drawing an item, the MeasureItem event is raised. 您可以建立事件的事件處理常式MeasureItem , 以指定您要在DrawItem事件的事件處理常式中繪製的專案大小。You can create an event handler for the MeasureItem event to specify the size for the item that you are going to draw in your event handler for the DrawItem event.

如需處理事件的詳細資訊, 請參閱處理和引發事件For more information about handling events, see Handling and Raising Events.

適用於

另請參閱