ListView.DrawItem ListView.DrawItem ListView.DrawItem ListView.DrawItem Event

Définition

Se produit lorsque ListView est dessiné et que la propriété OwnerDraw a la valeur true.Occurs when a ListView is drawn and the OwnerDraw property is set to 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 

Exemples

L’exemple de code suivant fournit une implémentation d' DrawItem un gestionnaire d’événements.The following code example provides an implementation of a DrawItem event handler. Pour obtenir un exemple complet, consultez OwnerDraw la rubrique de référence.For the complete example, see the OwnerDraw reference topic.

// 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' ListView un contrôle à l’aide du dessin owner-drawn.This event lets you customize the appearance of a ListView control using owner drawing. Il est déclenché uniquement lorsque la OwnerDraw propriété a la truevaleur.It is raised only when the OwnerDraw property is set to true. Pour plus d’informations sur le dessin owner- OwnerDraw drawn, consultez la rubrique de référence sur les propriétés.For more information about owner drawing, see the OwnerDraw property reference topic.

L' DrawItem événement peut se produire pour ListView chaque élément.The DrawItem event can occur for each ListView item. Lorsque la View propriété a la View.Detailsvaleur, les DrawSubItem événements DrawColumnHeader et se produisent également.When the View property is set to View.Details, the DrawSubItem and DrawColumnHeader events also occur. Dans ce cas, vous pouvez gérer l' DrawItem événement pour dessiner des éléments communs à tous les éléments, tels que l’arrière-plan DrawSubItem , et gérer l’événement pour dessiner des éléments pour des sous-éléments, tels que des valeurs de texte.In this case, you can handle the DrawItem event to draw elements common to all items, such as the background, and handle the DrawSubItem event to draw elements for individual subitems, such as text values. Vous pouvez également dessiner tous les éléments ListView du contrôle à l’aide d’un seul des deux événements, même si cela peut être moins pratique.You can also draw all items in the ListView control using only one of the two events, although this may be less convenient. Pour dessiner des en-têtes de colonnes en mode Détails, vous devez DrawColumnHeader gérer l’événement.To draw column headers in the details view, you must handle the DrawColumnHeader event.

Notes

En raison d’un bogue dans le contrôle Win32 sous DrawItem -jacent, l' DrawSubItem événement se produit sans événements associés une fois par ligne dans la vue Détails lorsque le pointeur de la souris se déplace DrawSubItem sur la ligne, ce qui entraîne l’affichage de tout ce qui est peint dans un gestionnaire d’événements peint par un arrière-plan personnalisé dessiné dans DrawItem un gestionnaire d’événements.Because of a bug in the underlying Win32 control, the DrawItem event occurs without accompanying DrawSubItem events once per row in the details view when the mouse pointer moves over the row, causing anything painted in a DrawSubItem event handler to be painted over by a custom background drawn in a DrawItem event handler. Consultez l’exemple de la OwnerDraw rubrique de référence pour obtenir une solution de contournement qui invalide chaque ligne lorsque l’événement supplémentaire se produit.See the example in the OwnerDraw reference topic for a workaround that invalidates each row when the extra event occurs. Une autre solution consiste à placer tout votre code de dessin personnalisé dans DrawSubItem un gestionnaire d’événements et à peindre l’arrière-plan de l’élément entier (y compris DrawListViewSubItemEventArgs.ColumnIndex des sous-éléments) uniquement lorsque la valeur est 0.An alternative workaround is to put all your custom drawing code in a DrawSubItem event handler and paint the background for the entire item (including subitems) only when the DrawListViewSubItemEventArgs.ColumnIndex value is 0.

Pour plus d'informations sur la gestion des événements, voir gestion et déclenchement d’événements.For more information about handling events, see Handling and Raising Events.

S’applique à

Voir aussi