ListView.DrawItem Ereignis

Definition

Tritt ein, wenn eine ListView gezeichnet wird und die OwnerDraw-Eigenschaft auf true festgelegt ist.

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

Ereignistyp

Beispiele

Das folgende Codebeispiel stellt eine Implementierung eines DrawItem Ereignishandlers bereit. Das vollständige Beispiel finden Sie im OwnerDraw Referenzthema.

// Draws the backgrounds for entire ListView items.
private void listView1_DrawItem(object sender,
    DrawListViewItemEventArgs e)
{
    if ((e.State & ListViewItemStates.Selected) != 0)
    {
        // Draw the background and focus rectangle for a selected item.
        e.Graphics.FillRectangle(Brushes.Maroon, e.Bounds);
        e.DrawFocusRectangle();
    }
    else
    {
        // Draw the background for an unselected item.
        using (LinearGradientBrush brush =
            new LinearGradientBrush(e.Bounds, Color.Orange,
            Color.Maroon, LinearGradientMode.Horizontal))
        {
            e.Graphics.FillRectangle(brush, e.Bounds);
        }
    }

    // Draw the item text for views other than the Details view.
    if (listView1.View != View.Details)
    {
        e.DrawText();
    }
}
' Draws the backgrounds for entire ListView items.
Private Sub listView1_DrawItem(ByVal sender As Object, _
    ByVal e As DrawListViewItemEventArgs) _
    Handles listView1.DrawItem

    If Not (e.State And ListViewItemStates.Selected) = 0 Then

        ' Draw the background for a selected item.
        e.Graphics.FillRectangle(Brushes.Maroon, e.Bounds)
        e.DrawFocusRectangle()

    Else

        ' Draw the background for an unselected item.
        Dim brush As New LinearGradientBrush(e.Bounds, Color.Orange, _
            Color.Maroon, LinearGradientMode.Horizontal)
        Try
            e.Graphics.FillRectangle(brush, e.Bounds)
        Finally
            brush.Dispose()
        End Try

    End If

    ' Draw the item text for views other than the Details view.
    If Not Me.listView1.View = View.Details Then
        e.DrawText()
    End If

End Sub

Hinweise

Mit diesem Ereignis können Sie die Darstellung eines ListView Steuerelements mithilfe der Besitzerzeichnung anpassen. Sie wird nur ausgelöst, wenn die OwnerDraw -Eigenschaft auf truefestgelegt ist. Weitere Informationen zum Zeichnen von Besitzern finden Sie im OwnerDraw Thema zur Eigenschaftsreferenz.

Das DrawItem Ereignis kann für jedes ListView Element auftreten. Wenn die View -Eigenschaft auf View.Detailsfestgelegt ist, treten auch die DrawSubItem Ereignisse und DrawColumnHeader auf. In diesem Fall können Sie das DrawItem Ereignis behandeln, um Elemente zu zeichnen, die allen Elementen gemeinsam sind, z. B. dem Hintergrund, und das DrawSubItem Ereignis behandeln, um Elemente für einzelne Unterelemente zu zeichnen, z. B. Textwerte. Sie können auch alle Elemente im ListView Steuerelement mit nur einem der beiden Ereignisse zeichnen, obwohl dies möglicherweise weniger praktisch ist. Um Spaltenüberschriften in der Detailansicht zu zeichnen, müssen Sie das DrawColumnHeader -Ereignis behandeln.

Hinweis

Aufgrund eines Fehlers im zugrunde liegenden Win32-Steuerelement tritt das DrawItem Ereignis ohne begleite DrawSubItem Ereignisse einmal pro Zeile in der Detailansicht auf, wenn der Mauszeiger über die Zeile bewegt wird, sodass alles, was in einem DrawSubItem Ereignishandler gezeichnet wurde, von einem benutzerdefinierten Hintergrund in einem DrawItem Ereignishandler übermalt wird. Im Beispiel im OwnerDraw Referenzthema finden Sie eine Problemumgehung, die jede Zeile ungültig macht, wenn das zusätzliche Ereignis auftritt. Eine alternative Problemumgehung besteht darin, ihren gesamten benutzerdefinierten Zeichnungscode in einem DrawSubItem Ereignishandler zu platzieren und den Hintergrund für das gesamte Element (einschließlich Unterelemente) nur zu zeichnen, wenn der DrawListViewSubItemEventArgs.ColumnIndex Wert 0 ist.

Weitere Informationen zur Behandlung von Ereignissen finden Sie unter behandeln und Auslösen von Ereignissen.

Gilt für:

Weitere Informationen