ListView.DrawItem, événement
Mise à jour : novembre 2007
Espace de noms : System.Windows.FormsAssembly : System.Windows.Forms (dans System.Windows.Forms.dll)
Cet événement vous permet de personnaliser l'apparence d'un contrôle ListView à l'aide d'un dessin owner-drawn. Il se déclenche uniquement lorsque la propriété OwnerDraw a la valeur true. Pour plus d'informations sur le dessin owner-drawn, consultez la rubrique de référence de la propriété OwnerDraw.
L'événement DrawItem peut se produire pour chaque élément ListView. Lorsque la propriété View a la valeur View.Details, les événements DrawSubItem et DrawColumnHeader se produisent également. Dans ce cas, vous pouvez gérer l'événement DrawItem pour dessiner des éléments communs à tous les éléments, par exemple l'arrière-plan, et gérer l'événement DrawSubItem pour dessiner des éléments pour les sous-éléments, par exemple des valeurs texte. Vous pouvez également dessiner tous les éléments du contrôle ListView en utilisant uniquement l'un des deux événements, même si cela est moins pratique. Pour dessiner des en-têtes de colonnes en mode Détails, vous devez gérer l'événement DrawColumnHeader.
Remarque : |
|---|
En raison d'un bogue dans le contrôle Win32 sous-jacent, l'événement DrawItem se produit sans événements DrawSubItem associés une fois par ligne en mode Détails lorsque le pointeur de la souris est positionné sur la ligne, et tout élément peint dans un gestionnaire d'événements DrawSubItem est remplacé par un arrière-plan personnalisé dessiné dans un gestionnaire d'événements DrawItem. Consultez l'exemple contenu dans la rubrique de référence OwnerDraw pour obtenir une solution qui invalide chaque ligne lorsque l'événement supplémentaire se produit. Une autre solution consiste à insérer l'ensemble de 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 ses sous-éléments) uniquement lorsque DrawListViewSubItemEventArgs.ColumnIndex a la valeur 0. |
Pour plus d'informations sur la gestion des événements, consultez Consommation d'événements.
L'exemple de code suivant fournit une implémentation d'un gestionnaire d'événement DrawItem. Pour obtenir l'exemple complet, consultez la rubrique de référence OwnerDraw.
// 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(); } }
Windows Vista, Windows XP SP2, Windows XP Media Center Edition, Windows XP Professionnel Édition x64, Windows XP Starter Edition, Windows Server 2003, Windows Server 2000 SP4, Windows Millennium Edition, Windows 98
Le .NET Framework et le .NET Compact Framework ne prennent pas en charge toutes les versions de chaque plateforme. Pour obtenir la liste des versions prises en charge, consultez Configuration requise du .NET Framework.
Remarque :