Laden...

ComboBox benutzerdefinierte Auswahl ist extrem langsam :(

Erstellt von diana vor 11 Jahren Letzter Beitrag vor 11 Jahren 940 Views
D
diana Themenstarter:in
586 Beiträge seit 2004
vor 11 Jahren
ComboBox benutzerdefinierte Auswahl ist extrem langsam :(

Hallo,

verwende momentan eine ComboBox zur Anzeige eines Kataloges. Da ich die Anzeige noch manipuliere, soll heißen ausgewählte Items rot einfärbe und ich dies im DrawItem implementiere, ist das Laden dieser ComboBox extrem langsam. Dazu kommt noch, dass ich mehr als 2000 Datensätze lade. Würde gern wissen, was ich grundsätzlich machen kann in Sachen Performanz was die ComboBox betrifft.
Folgender Code steht im DrawItem:



if (e.Index == -1) return;

e.DrawBackground();
Brush brush;

string text = ((ComboBox)sender).Items[e.Index].ToString();
            
string f = "sw";

for (int i = 0; i < text.Length; i++)
{
     // Hochgestellte 1
     if (text[i] == 185)
     {
         f = "r"; break;
     }
}

if (f == "r")
   brush = Brushes.Red;
else
   brush = Brushes.Black;

e.Graphics.DrawString( text, ((Control)sender).Font, brush, e.Bounds.X, e.Bounds.Y);

Vielleicht hat jemand eine Idee.

:::

G
47 Beiträge seit 2011
vor 11 Jahren

Hi diana,

wenn du den string f nicht weiter benötigst, könntest du es mit:


if (e.Index == -1) return;

e.DrawBackground();
Brush brush;

string text = ((ComboBox)sender).Items[e.Index].ToString();

if (text.IndexOf((char)185)>=0)
   brush = Brushes.Red;
else
   brush = Brushes.Black;

e.Graphics.DrawString( text, ((Control)sender).Font, brush, e.Bounds.X, e.Bounds.Y); 

probieren.

Ansonsten hilft dir vielleich tein Blick in [Tutorial] Zeichnen in Windows-Forms-Programmen (Paint/OnPaint, PictureBox)
und den darin verlinkten Artikeln.

D
diana Themenstarter:in
586 Beiträge seit 2004
vor 11 Jahren

Vielen Dank. Leider hat dein IndexOf nicht allzuviel gebracht, aber programmiertechnisch sieht das allemal besser aus. Ich schau mir mal das Tutorial an. Danke

:::

4.939 Beiträge seit 2008
vor 11 Jahren

Hallo diana,

du schreibst, daß "das Laden extrem langsam" ist. Wie fügst du denn die Items der ComboBox hinzu? Hast du denn BeginUpdate/EndUpdate verwendet bzw. AddRanges?