ListView.DrawItem Evento

Definizione

Si verifica quando viene creata una classe ListView e la proprietà OwnerDraw è impostata su 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 

Tipo evento

DrawListViewItemEventHandler

Esempio

Nell'esempio di codice seguente viene fornita un'implementazione di DrawItem un gestore eventi . Per l'esempio completo, vedere OwnerDraw l'argomento di riferimento.

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

Commenti

Questo evento consente di personalizzare l'aspetto di un ListView controllo utilizzando il disegno del proprietario. Viene generato solo quando la OwnerDraw proprietà è impostata su true . Per altre informazioni sul disegno del proprietario, vedere OwnerDraw l'argomento di riferimento sulle proprietà.

DrawItemL'evento può verificarsi per ogni ListView elemento. Quando la View proprietà è impostata su View.Details , si DrawSubItem DrawColumnHeader verificano anche gli eventi e . In questo caso, è possibile gestire l'evento per disegnare elementi comuni a tutti gli elementi, ad esempio lo sfondo, e gestire l'evento per disegnare elementi per singoli elementi secondari, ad esempio valori DrawItem DrawSubItem di testo. È anche possibile disegnare tutti gli elementi nel controllo usando solo uno dei due eventi, anche se ListView questo può risultare meno pratico. Per disegnare intestazioni di colonna nella visualizzazione dettagli, è necessario gestire DrawColumnHeader l'evento .

Nota

A causa di un bug nel controllo Win32 sottostante, l'evento si verifica senza eventi correlati una volta per riga nella visualizzazione dettagli quando il puntatore del mouse si sposta sulla riga, causando il disegno di qualsiasi elemento disegnato in un gestore eventi da uno sfondo personalizzato disegnato in un gestore DrawItem DrawSubItem DrawSubItem DrawItem eventi. Vedere l'esempio OwnerDraw nell'argomento di riferimento per una soluzione alternativa che invalida ogni riga quando si verifica l'evento aggiuntivo. Una soluzione alternativa consiste nell'inserire tutto il codice di disegno personalizzato in un gestore eventi e disegnare lo sfondo per l'intero elemento (inclusi gli elementi secondari) solo quando il valore DrawSubItem DrawListViewSubItemEventArgs.ColumnIndex è 0.

Per ulteriori informazioni sulla gestione degli eventi, consultare gestione e generazione di eventi.

Si applica a

Vedi anche