Partager via


ListView.DrawItem Événement

Définition

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

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 

Type d'événement

Exemples

L’exemple de code suivant fournit une implémentation d’un gestionnaire d’événements DrawItem . Pour obtenir l’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();
    }
}
' 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

Remarques

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

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

Note

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

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

S’applique à

Voir aussi