Cet article a fait l’objet d’une traduction automatique. Pour afficher l’article en anglais, activez la case d’option Anglais. Vous pouvez également afficher le texte anglais dans une fenêtre contextuelle en faisant glisser le pointeur de la souris sur le texte traduit.
Traduction
Anglais

ListView.DrawItem événement

 

Date de publication : novembre 2016

Se produit lorsqu’un ListView est dessiné et que la OwnerDraw est définie sur true.

Espace de noms:   System.Windows.Forms
Assembly:  System.Windows.Forms (dans System.Windows.Forms.dll)

public event DrawListViewItemEventHandler DrawItem

Cet événement vous permet de personnaliser l’apparence d’un ListView contrôle owner-drawn. Il est déclenché uniquement lorsque le OwnerDraw est définie sur true. Pour plus d’informations sur le dessin owner-drawn, consultez la OwnerDraw rubrique de référence de propriété.

Le DrawItem événement peut se produire pour chaque ListView élément. Lorsque la View est définie sur View.Details, le DrawSubItem et DrawColumnHeader les événements se produisent également. Dans ce cas, vous pouvez gérer les DrawItem événement pour dessiner des éléments communs à tous les éléments, tels que l’arrière-plan et gérer les DrawSubItem événement pour dessiner des éléments pour les sous-éléments, telles que les valeurs de texte. Vous pouvez également dessiner tous les éléments le ListView contrôler à l’aide d’un seul des deux événements, même si cela est moins pratique. Pour dessiner des en-têtes de colonne dans la vue Détails, vous devez gérer le DrawColumnHeader événement.

System_CAPS_noteRemarque

En raison d’un bogue dans le contrôle Win32 sous-jacent, le DrawItem événement se produit sans accompagnement DrawSubItem événements une fois par ligne dans la vue Détails lorsque le pointeur de la souris se déplace sur la ligne, et tout élément peint dans un DrawSubItem est remplacé par un arrière-plan personnalisé dessiné dans un gestionnaire d’événements un DrawItem Gestionnaire d’événements. Consultez l’exemple dans le OwnerDraw rubrique de référence pour une solution qui invalide chaque ligne lorsque l’événement supplémentaire se produit. Une autre solution consiste à placer tout votre code de dessin personnalisé dans un DrawSubItem Gestionnaire d’événements et peindre l’arrière-plan de l’élément entier (y compris ses sous-éléments) uniquement lorsque la DrawListViewSubItemEventArgs.ColumnIndex valeur est 0.

Pour plus d’informations sur la gestion des événements, consultez la page gestion et déclenchement d’événements.

L’exemple de code suivant fournit une implémentation d’un DrawItem Gestionnaire d’événements. Pour obtenir un exemple complet, consultez la OwnerDraw rubrique de référence.

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

.NET Framework
Disponible depuis 2.0
Retour au début
Afficher: