AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

[C#] ListBox-Eintrag einfärben

Ein Thema von TurboMartin · begonnen am 30. Jun 2009 · letzter Beitrag vom 30. Jun 2009
Antwort Antwort
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, 20: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
Benutzerbild von cruiser
cruiser

Registriert seit: 23. Dez 2003
Ort: Königsbrück/Sachsen
455 Beiträge
 
Delphi 7 Enterprise
 
#2

Re: [C#] ListBox-Eintrag einfärben

  Alt 30. Jun 2009, 20:56
Hab das eben mal getested

Hast du das listBox1.Invalidate(); auch im Event SelectedIndexChanged drin? damit läufts doch einwandfrei?

Fürs nächste Mal wäre der Methodenkopf nich verkehrt. Und ein Invalidate() (löst neuzeichnen aus) während du neu zeichnest, muss in einer Endlosschleife enden. Da hilft dir Auch Application.DoEvents(); nichts mehr
  Mit Zitat antworten Zitat
Antwort Antwort


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 05:20 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz