Ich habe eine tableLayoutPanel
, die ich mit einem Windows Form verwenden. Das Steuerelement wird von einem datatable
aufgefüllt, der SQL Server-Daten enthält. Ich habe bereits bestätigt, dass die select
Aussage nicht das Problem ist.Kann das tableLayoutPanel optimal gefüllt werden?
Die Datentabelle wird häufig aktualisiert, daher wird auch die tableLayoutPanel
häufig aktualisiert. Es funktioniert im Wesentlichen gut, aber es wird zu einem Punkt, dass es ein wenig langsamer wird und das Flackern ist auffälliger.
Jedesmal, wenn ich brauche die Steuerung zu aktualisieren, wird dieser Code ausgeführt:
public void FillTlp()
{
tableLayoutPanel1.Controls.Clear();
tableLayoutPanel1.ColumnStyles.Clear();
foreach (DataRow r in DT.Rows)
{
UcColor button = new UcColor(r);
tableLayoutPanel1.Controls.Add(button);//, colNumNew, rowNum);
}
this.Controls.Add(tableLayoutPanel1);
}
Da die immer 8 Zeilen haben wird, wie ich den folgenden Code in dem Formular Konstruktor ausführen nur einmal, aber ich sehe nicht, viel Nutzen:
public FormDoctorMonitor()
{
tableLayoutPanel1.RowStyles.Clear();
tableLayoutPanel1.RowCount = 8;
FillTlp();
}
Wie sonst kann ich die tableLayoutPanel
optimieren bevölkern?
Danke.
Offensichtliche Frage: Warum ist "refresh" tatsächlich "von Grund auf neu konstruieren"? Ändere nur, was geändert werden muss. – DonBoitnott
Ohne [MCVE] (http:// Stackoverflow.com/help/mcve) ist es schwer zu sagen, was das Problem ist. Nur ein paar Tipps: ** 1 - ** Bevor Sie dem Panel neue Bedienelemente hinzufügen, müssen Sie die vorherigen Steuerelemente, die Sie hinzugefügt haben, mit "Dispose" versehen. Derzeit entfernst du sie nur. Sie sollten sowohl entfernen als auch entsorgen. ** 2 - ** Calling 'panel.SuspendLayout();' vor dem Entfernen von Steuerelementen und Aufruf von 'panel.ResumeLayout (true);' nach dem Hinzufügen neuer Steuerelemente kann helfen. –
@RezaAghaei, wo soll ich 'tableLayoutPanel1.Dispose();'? Wenn ich es am Anfang hinzufüge, erhalte ich den Laufzeitfehler 'Kann auf das entsorgte Objekt nicht zugreifen'. Ich habe den Beispielcode mit Ihren Vorschlägen geändert. Bitte lassen Sie mich wissen, ob sie am richtigen Ort sind. – rbhat