Comment pouvez-vous modifier la couleur d'arrière-plan des en-têtes d'un ListView?Modifier la couleur d'arrière-plan des en-têtes Winform ListView
Répondre
Vous pouvez faire cela en définissant la propriété OwnerDraw pour la vue de liste sur true.
Cela vous permet ensuite de fournir des gestionnaires d'événements pour les événements de dessin de la liste.
Il y a un exemple détaillé sur MSDN
est Ci-dessous quelques exemples de code pour définir la couleur d'en-tête rouge:
private void listView1_DrawColumnHeader(object sender,
DrawListViewColumnHeaderEventArgs e)
{
e.Graphics.FillRectangle(Brushes.Red, e.Bounds);
e.DrawText();
}
Je pense (mais je suis heureux d'être démentie) que, ensemble OwnerDraw true, vous devrez fournir également des gestionnaires pour les autres événements de tirage qui ont mises en œuvre par défaut comme indiqué ci-dessous:
private void listView1_DrawItem(object sender,
DrawListViewItemEventArgs e)
{
e.DrawDefault = true;
}
J'ai certainement pas ma Naged pour faire le listview dessiner les éléments sans cela.
Comme un mot d'avertissement, parce qu'il m'a fallu plus d'une heure pour le comprendre, ne mettez pas une commande MSGBOX à l'intérieur du drawcolumnheader! Il bloque vb.net - cela a bien fonctionné autrement – cardmagik
Je sais que c'est un peu tard pour la fête mais j'ai quand même vu ce post et cela m'aurait aidé. Voici une petite application abstraite du code david fourni
using System.Windows.Forms;
using System.Drawing;
//List view header formatters
public static void colorListViewHeader(ref ListView list, Color backColor, Color foreColor)
{
list.OwnerDraw = true;
list.DrawColumnHeader +=
new DrawListViewColumnHeaderEventHandler
(
(sender, e) => headerDraw(sender, e, backColor, foreColor)
);
list.DrawItem += new DrawListViewItemEventHandler(bodyDraw);
}
private static void headerDraw(object sender, DrawListViewColumnHeaderEventArgs e, Color backColor, Color foreColor)
{
e.Graphics.FillRectangle(new SolidBrush(backColor), e.Bounds);
e.Graphics.DrawString(e.Header.Text, e.Font, new SolidBrush(foreColor), e.Bounds);
}
private static void bodyDraw(object sender, DrawListViewItemEventArgs e)
{
e.DrawDefault = true;
}
Ensuite, appelez dans votre constructeur de forme
public Form()
{
InitializeComponent();
*CLASS NAME*.colorListViewHeader(ref myListView, *SOME COLOR*, *SOME COLOR*);
}
Il suffit de remplacer la CLASSE NOM * * avec quelque classe que vous mettez le premier bit de code et les * QUELQUES COULEURS * avec une sorte de couleur.
//Some examples:
Color.white
SystemColors.ActiveCaption
Color.FromArgb(0, 102, 255, 102);
Bonne chance à tous!
- 1. Modifier ListView sélectionné la couleur sur Android
- 2. gtm-http-fetcher modifier entêtes HTTP
- 3. Modifier la couleur d'arrière-plan de ListView dans VB6
- 4. Modifier la couleur de sélection d'arrière-plan de ListView?
- 5. Peupler la valeur listview dans WinForm
- 6. Comment modifier la taille des lignes ListView
- 7. Modifier la couleur UIBarButtonItem
- 8. Modifier la couleur SVG
- 9. Modifier WinForm MenuStrip dérivé
- 10. couleur de sélection Listview
- 11. Modifier le style de la bordure WinForm?
- 12. VB - ListView - Modifier la hauteur de l'en-tête?
- 13. Modifier l'interligne dans winform RichTextBox
- 14. Annulation de SelectedIndexChanged dans WinForm ListView
- 15. Création de ListView dans un triable WinForm?
- 16. Modifier dynamiquement des éléments dans un listView
- 17. Modifier la taille et la couleur des onglets iphone
- 18. Listview modifier l'élément
- 19. modifier ListView de C de la clr
- 20. Modifier la couleur de sélection de WPF ListViewItem
- 21. comment changer la couleur de winform DataGridview en-tête?
- 22. Modifier la couleur des dates sur le moisCalendrier
- 23. modifier la couleur du nœud treeview
- 24. Modifier la couleur UINavigationbar pour l'onglet "Plus"?
- 25. Modifier la couleur commune dans ControlTemplate
- 26. GTK: Modifier la couleur bg d'un coches
- 27. Modifier la couleur dans Rich Edit Control
- 28. Modifier la couleur du texte dans WebView
- 29. Modifier la couleur de bordure pour DatePicker
- 30. Modifier la couleur du tilde (~) dans Vim
vous devrez implémenter le dessin personnalisé en remplaçant l'événement Paint. –
en remplaçant la méthode Paint ne fait rien sur un ListView. Vous devez utiliser le mécanisme OwnerDraw suggéré par @David. Rappelez-vous simplement que cela supprime tout style de votre contrôle d'en-tête - pas d'élément chaud, pas d'indicateurs de tri, pas d'arrière-plans dégradés. – Grammarian