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.
:::
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.
Vielen Dank. Leider hat dein IndexOf nicht allzuviel gebracht, aber programmiertechnisch sieht das allemal besser aus. Ich schau mir mal das Tutorial an. Danke
:::
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?