ich eine benutzerdefinierte Kontrolle gemacht habe, ist es ein Flowlayoutpanel, in dem ich ein paar anderen benutzerdefinierten Steuerelemente setzte (nur Buttons, überschichtet mit jeweils drei Labels und ein PictureBox)extrem langsam C# benutzerdefinierte Steuerung
Es funktioniert ok mit ungefähr 100 Knöpfen, aber stoß das bis 1000 und es ist in Schwierigkeiten. Bump das bis zu 5000 und es stirbt nur nach 20 Sekunden.
Ich habe sehr wenig benutzerdefinierten Code, und ich verwende sinnvoll Suspend und Lebenslauf-Layout.
Also, was mache ich falsch? Ich bin mir sicher, dass mein (ziemlich schneller) Computer in der Lage sein sollte, ein paar tausend Knöpfe und Etiketten zu handhaben.
(Ich bin zu C# GUI Zeug ziemlich neu, so vielleicht soll ich die Dinge völlig anders sowieso tun.)
Edit 1:
Das ist so ziemlich der einzige zur Zeit benutzerdefinierte Code:
flowLayoutPanel1.SuspendLayout();
foreach (DataRow row in dt.Rows) // dt is from a DB query
{
flowLayoutPanel1.Controls.Add(new PersonButton(row));
}
flowLayoutPanel1.ResumeLayout();
und im PersonButton Konstruktor:
this.label1.Text = row["FirstName"].ToString().Trim() + " "
+ row["Surname"].ToString().Trim();
(Es sollte auch ein Bild angehängt sein, aber ich bin mir nicht sicher, ob jemand sie sehen können.)
Edit 2:
Ich denke, ich sollte wirklich ein Datagridview verwenden, oder Listview, aber ich wollte mehr als nur eine Textzeile und ein kleines Symbol pro Zeile; Ich wollte, dass es ähnlich der Download-Ansicht in Firefox aussieht (Strg + J). (Siehe Screenshot)
Vielen Dank für Ihre Eingabe, BTW. Ich denke, ich werde überdenken müssen ...
alt text http://img156.imageshack.us/img156/1057/capture.png
Sind Sie sicher, dass dies ein benutzerdefiniertes Steuerelement ist und kein Benutzersteuerelement? Es hört sich so an, als hätten Sie eine Benutzerkontrolle vorgenommen. – recursive
"Was mache ich falsch?" Anzeige von 1000 Schaltflächen in einem Formular. –
Versuchen Sie das Seitennavigationskonzept zu verwenden –