Udostępnij za pośrednictwem


ListView.DrawItem Zdarzenie

Definicja

Występuje, gdy obiekt ListView jest rysowany, a właściwość jest ustawiona OwnerDraw na truewartość .

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 

Typ zdarzenia

Przykłady

Poniższy przykład kodu zawiera implementację DrawItem procedury obsługi zdarzeń. Pełny przykład można znaleźć w temacie referencyjnym OwnerDraw .

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

Uwagi

To zdarzenie umożliwia dostosowanie wyglądu kontrolki przy użyciu rysunku ListView właściciela. Jest on zgłaszany tylko wtedy, gdy właściwość jest ustawiona OwnerDraw na true. Aby uzyskać więcej informacji na temat rysunku OwnerDraw właściciela, zobacz temat odwołania do właściwości.

Zdarzenie DrawItem może wystąpić dla każdego ListView elementu. Gdy właściwość jest ustawiona View na View.Details, wystąpią DrawSubItem również zdarzenia i DrawColumnHeader . W takim przypadku można obsłużyć DrawItem zdarzenie, aby rysować elementy wspólne dla wszystkich elementów, takich jak tło, i obsługiwać DrawSubItem zdarzenie, aby narysować elementy poszczególnych poditemów, takich jak wartości tekstowe. Można również rysować wszystkie elementy w kontrolce ListView przy użyciu tylko jednego z dwóch zdarzeń, chociaż może to być mniej wygodne. Aby narysować nagłówki kolumn w widoku szczegółów, musisz obsłużyć DrawColumnHeader zdarzenie.

Uwaga

Ze względu na usterkę w podstawowej kontrolce DrawItem Win32 zdarzenie występuje bez towarzyszących DrawSubItem zdarzeń raz w wierszu w widoku szczegółów, gdy wskaźnik myszy porusza się nad wierszem, powodując, że wszystko malowane w DrawSubItem procedurze obsługi zdarzeń ma być malowane przez niestandardowe tło rysowane w procedurze DrawItem obsługi zdarzeń. Zobacz przykład w temacie referencyjnym, OwnerDraw aby uzyskać obejście, które unieważnia każdy wiersz po wystąpieniu dodatkowego zdarzenia. Alternatywnym obejściem jest umieszczenie całego niestandardowego kodu rysunku w DrawSubItem procedurze obsługi zdarzeń i malowanie tła całego elementu (w tym poditemów) tylko wtedy, gdy DrawListViewSubItemEventArgs.ColumnIndex wartość to 0.

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

Dotyczy

Zobacz też