ListView.DrawItem Ereignis

Definition

Tritt ein, wenn eine ListView gezeichnet wird und die OwnerDraw-Eigenschaft auf true festgelegt ist.Occurs when a ListView is drawn and the OwnerDraw property is set to true.

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

DrawListViewItemEventHandler

Beispiele

Im folgenden Codebeispiel wird eine Implementierung eines- DrawItem Ereignis Handlers bereitstellt.The following code example provides an implementation of a DrawItem event handler. Das komplette Beispiel finden Sie im OwnerDraw Referenz Thema.For the complete example, see the OwnerDraw reference topic.

// 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

Mithilfe dieses Ereignisses können Sie die Darstellung eines ListView Steuer Elements mithilfe der Besitzer Zeichnung anpassen.This event lets you customize the appearance of a ListView control using owner drawing. Sie wird nur ausgelöst, wenn die- OwnerDraw Eigenschaft auf festgelegt ist true .It is raised only when the OwnerDraw property is set to true. Weitere Informationen zum Erstellen von Besitzern finden Sie im Abschnitt zur OwnerDraw Eigenschaften Referenz.For more information about owner drawing, see the OwnerDraw property reference topic.

Das DrawItem Ereignis kann für jedes ListView Element auftreten.The DrawItem event can occur for each ListView item. Wenn die View -Eigenschaft auf festgelegt ist View.Details , DrawSubItem DrawColumnHeader treten auch die Ereignisse und auf.When the View property is set to View.Details, the DrawSubItem and DrawColumnHeader events also occur. In diesem Fall können Sie das-Ereignis behandeln, DrawItem um Elemente zu zeichnen, die für alle Elemente (z. b. den Hintergrund) gemeinsam sind, und das-Ereignis behandeln, DrawSubItem um Elemente für einzelne unter Elemente, wie z. b. Textwerte, zu zeichnen.In this case, you can handle the DrawItem event to draw elements common to all items, such as the background, and handle the DrawSubItem event to draw elements for individual subitems, such as text values. Sie können auch alle Elemente im Steuerelement ListView mit nur einem der beiden Ereignisse zeichnen, obwohl dies weniger praktisch sein kann.You can also draw all items in the ListView control using only one of the two events, although this may be less convenient. Um Spaltenüberschriften in der Detailansicht zu zeichnen, müssen Sie das- DrawColumnHeader Ereignis behandeln.To draw column headers in the details view, you must handle the DrawColumnHeader event.

Hinweis

Aufgrund eines Fehlers im zugrunde liegenden Win32-Steuerelement DrawItem tritt das Ereignis ohne begleitende DrawSubItem Ereignisse einmal pro Zeile in der Detailansicht auf, wenn der Mauszeiger über die Zeile bewegt wird. Dadurch wird alles, was in einem- DrawSubItem Ereignishandler gezeichnet wird, durch einen benutzerdefinierten Hintergrund gezeichnet, der in einem- DrawItem Ereignishandler gezeichnet wird.Because of a bug in the underlying Win32 control, the DrawItem event occurs without accompanying DrawSubItem events once per row in the details view when the mouse pointer moves over the row, causing anything painted in a DrawSubItem event handler to be painted over by a custom background drawn in a DrawItem event handler. Im Beispiel im OwnerDraw Referenz Thema finden Sie eine Problem Umgehung, die jede Zeile für ungültig erklärt, wenn das zusätzliche Ereignis auftritt.See the example in the OwnerDraw reference topic for a workaround that invalidates each row when the extra event occurs. Eine alternative Lösung besteht darin, den gesamten benutzerdefinierten Zeichnungs Code in einen DrawSubItem -Ereignishandler einzufügen und den Hintergrund für das gesamte Element (einschließlich der unter Elemente) nur dann zu zeichnen, wenn der DrawListViewSubItemEventArgs.ColumnIndex Wert 0 ist.An alternative workaround is to put all your custom drawing code in a DrawSubItem event handler and paint the background for the entire item (including subitems) only when the DrawListViewSubItemEventArgs.ColumnIndex value is 0.

Weitere Informationen zur Behandlung von Ereignissen finden Sie unter behandeln und Auslösen von Ereignissen.For more information about handling events, see Handling and Raising Events.

Gilt für:

Siehe auch