Udostępnij za pośrednictwem


ListBox.DrawItem Zdarzenie

Definicja

Występuje, gdy wizualny aspekt narysowanego ListBox przez właściciela zmienia się.

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 

Typ zdarzenia

Przykłady

W poniższym przykładzie kodu pokazano, jak utworzyć elementy rysowane ListBox przez właściciela. Kod używa DrawMode właściwości , aby określić, że rysowane elementy mają stały rozmiar, a DrawItem zdarzenie do wykonania rysunku każdego elementu w ListBoxobiekcie . Przykładowy kod używa właściwości i metod klasy przekazanej DrawItemEventArgs jako parametr do procedury obsługi zdarzeń w celu narysowania elementów. Ten przykład wymaga dodania ListBox kontrolki o nazwie listBox1 do formularza i obsługi DrawItem zdarzenia przez program obsługi zdarzeń zdefiniowany w przykładowym kodzie. Przykład wymaga również dodania elementów do ListBox elementu z tekstem "Apple", "Orange" i "Plum" w tej kolejności.

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

Uwagi

To zdarzenie jest używane przez właściciela narysowanego ListBox. Zdarzenie jest zgłaszane tylko wtedy, gdy właściwość jest ustawiona DrawMode na DrawMode.OwnerDrawFixed wartość lub DrawMode.OwnerDrawVariable. To zdarzenie służy do wykonywania zadań wymaganych do rysowania elementów w obiekcie ListBox. Jeśli masz element o zmiennym rozmiarze (gdy DrawMode właściwość jest ustawiona na DrawMode.OwnerDrawVariable), przed narysowaniem elementu MeasureItem zdarzenie jest zgłaszane. Można utworzyć program obsługi zdarzeń dla MeasureItem zdarzenia, aby określić rozmiar elementu, który ma zostać narysowane w procedurze obsługi zdarzeń dla DrawItem zdarzenia.

Aby uzyskać więcej informacji na temat obsługi zdarzeń, zobacz Obsługa i podnoszenie zdarzeń.

Dotyczy

Zobacz też