Einzelnen Beitrag anzeigen

TurboMartin

Registriert seit: 13. Feb 2006
Ort: Bad Honnef
765 Beiträge
 
Turbo Delphi für Win32
 
#1

[C#] ListBox-Eintrag einfärben

  Alt 30. Jun 2009, 19:34
Hallo DP ,

ich hab mal wieder ein Problem in Sachen C#. Diesmal versuche ich einen ListBox-Eintrag einzufärben. Das funktioniert soweit eigentlich, alledings kann man nicht mehr die Markierung sehen. Also mal ein wenig rumprobiert. Dabei kam raus, das diese hervorhebung nur dann zu sehen ist, wenn ich nichts auf den Hintergrund zeiche.

Also folgendes im DrawItem-Event geschrieben:

Code:
e.DrawBackground();
if (e.Index != lbTagsControll.SelectedIndex)
{
    e.Graphics.FillRectangle(Brushes.LightGreen, e.Bounds.Left, e.Bounds.Top, 774, 13);
}
e.Graphics.DrawString(lbTagsControll.Items[e.Index].ToString(), e.Font, Brushes.Black, (new PointF(e.Bounds.Left, e.Bounds.Top)));
e.DrawFocusRectangle();
Mein Problem ist jetzt aber, das wenn ich jetzt eins gewählt hatte, und dann einen anderen Eintrag auswähle, der alte weiß bleibt, obwohl er nicht mehr ausgewählt ist. Wenn ich die Pfeiltasten zum scrollen benutze färben die sich sogar beim Scrollen nicht um, nutze ich die Maus, werden sie verspätet gezeichnet.

Ein ansatz war ListBox.Invalidate(), allerdings hing anschließend das ganze Programm, auch ein Application.DoEvents() brachte keinen Erfolg.

Wie kriege ich es jetzt hin, dass diese richtig gezeichnet werden?
Tomorrow will be cancelled due to lack of interest.

  Mit Zitat antworten Zitat