Je ne suis intéressé que par les solutions gratuites, et ai préféré qu’elles ne soient pas lourdes à mettre en œuvre ou à modifier l’utilisation actuelle (le moins d’effort possible pour introduire une ListBox colorée au lieu d’une normale est préférable).
Cordialement,
Garçon furieux
Cet article explique comment utiliser DrawItem d’un ListBox avec DrawMode défini sur l’une des valeurs OwnerDraw. En gros, vous faites quelque chose comme ça:
listBox1.DrawMode = OwnerDrawFixed; listBox1.DrawItem += new System.Windows.Forms.DrawItemEventHandler(this.listBox1_DrawItem); private void listBox1_DrawItem(object sender, DrawItemEventArgs e) { e.DrawBackground(); e.DrawFocusRectangle(); // TODO: Split listBox1.Items[e.Index].ToSsortingng() and then draw each separately in a different color e.Graphics.DrawSsortingng(listBox1.Items[e.Index].ToSsortingng(),new Font(FontFamily.GenericSansSerif, 14, FontStyle.Bold),new SolidBrush(color[e.Index]),e.Bounds); }
Au lieu d’un appel DrawSsortingng unique, scindez listBox1.Items [e.Index] .ToSsortingng () en mots et appelez DrawSsortingng séparément pour chaque mot. Vous devrez remplacer e.bounds par un emplacement x, y ou un rectangle de délimitation pour chaque mot.
La même approche devrait fonctionner pour ListView .
Aucune API intégrée ne prend en charge ce type de modification dans un ListBox
ou un ListView
WinForms. Il est certes possible d’y parvenir, mais la solution impliquera beaucoup de travaux de personnalisation et de substitution de WndProc. Ce sera une solution très complexe et lourde.
Si ce type d’expérience est important pour votre application, je pense que vous devriez considérer très sérieusement WPF comme une solution. WPF est conçu pour fournir ce type de bonbons pour les yeux et il existe probablement de nombreux échantillons sur le Web pour vous aider à démarrer.