ListView.DrawItem Evento

Definizione

Si verifica quando viene creata una classe ListView e la proprietà OwnerDraw è impostata su true.

C#
public event System.Windows.Forms.DrawListViewItemEventHandler DrawItem;
C#
public event System.Windows.Forms.DrawListViewItemEventHandler? DrawItem;

Tipo evento

Esempio

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

C#
// 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();
    }
}

Commenti

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

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

Nota

A causa di un bug nel controllo Win32 sottostante, l'evento DrawItem si verifica senza eventi accompagnati DrawSubItem una volta per riga nella visualizzazione dei dettagli quando il puntatore del mouse si sposta sulla riga, causando che qualsiasi elemento dipinto in un gestore eventi venga dipinto da uno sfondo personalizzato disegnato in un DrawSubItemDrawItem gestore eventi. Vedere l'esempio nell'argomento OwnerDraw 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 DrawSubItem gestore eventi e disegnare lo sfondo per l'intero elemento (inclusi gli elementi secondari) solo quando il DrawListViewSubItemEventArgs.ColumnIndex valore è 0.

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

Si applica a

Prodotto Versioni
.NET Framework 2.0, 3.0, 3.5, 4.0, 4.5, 4.5.1, 4.5.2, 4.6, 4.6.1, 4.6.2, 4.7, 4.7.1, 4.7.2, 4.8, 4.8.1
Windows Desktop 3.0, 3.1, 5, 6, 7, 8, 9, 10

Vedi anche