Partager via


ListView.DrawItem Événement

Définition

Se produit lorsque ListView est dessiné et que la propriété OwnerDraw a la valeur 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 rubrique de OwnerDraw 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 du propriétaire. Il est déclenché uniquement lorsque la OwnerDraw propriété a la valeur true. Pour plus d’informations sur le dessin 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é a la View.Detailsvaleur , les DrawSubItem événements et se DrawColumnHeader 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 d’un seul des deux événements, bien que cela puisse être moins pratique. Pour dessiner des en-têtes de colonne dans l’affichage détails, vous devez gérer l’événement DrawColumnHeader .

Notes

En raison d’un bogue dans le contrôle Win32 sous-jacent, l’événement DrawItem se produit sans événements d’accompagnement DrawSubItem une fois par ligne dans l’affichage des détails lorsque le pointeur de la souris se déplace sur la ligne, ce qui entraîne la peinture de tout ce qui est peint dans un DrawSubItem gestionnaire d’événements par un arrière-plan personnalisé dessiné dans un gestionnaire d’événements DrawItem . Consultez l’exemple dans 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