Entwickler-Ecke

WinForms - Items der Listbox einfärben


NostrA90 - Sa 18.04.09 19:44
Titel: Items der Listbox einfärben
Guten Abend,
Hab da gerade ein Problem, und zwar möchte ich Items einer Listbox hinzufügen, diesen Items möchte ich gerne eine Farbe bzw. Forecolor zuweisen. Mein Buch und Google weiß keinen Rat (bestimmt such ich mal wieder unter den falschen Befehlen :/ ).

Also im Endeffekt möchte ich eine Listbox erstellen die nach hinzufügen der Items (während das Programm läuft) in etwa so aussieht wie im Anhang.

(Sorry für meine Unwissenheit aber arbeite mich erst seit kurzem in C# ein)

Danke im vorraus für eure Hilfe

MFG Nostra90


Christian S. - Sa 18.04.09 20:06

Hi!

Dazu musst Du in WinForms die Items leider selber zeichnen. Um das zu tun setzt Du den DrawMode der Listbox auf OwnerDrawFixed und reagierst dann auf das DrawItem-Event der Listbox.

In dem Event kannst Du z.B. das hier machen:

Delphi-Prism-Quelltext
1:
2:
3:
  e.DrawBackground;
  e.Graphics.DrawString(ListBox(sender).Items[e.Index].ToString, e.Font, Brushes.Beige, e.Bounds.Left, e.Bounds.Top);
  e.DrawFocusRectangle;

Das würde alles in Beige zeichnen, die Farbe kannste natürlich machen wie Du willst ;-)

(Der Quellcode ist kein C#, geht da aber genauso)

Grüße
Christian


JüTho - Di 21.04.09 12:39

Hallo,

für solche Anforderungen ist übrigens CodeProject [http://www.codeproject.com] eine gute Adresse. (Alle dort vorgestellten Lösungen benutzen übrigens Christians Verfahren; du kannst auch Lösungen für ComboBox verwenden, das geht genauso.)

Gruß Jürgen