Ich arbeite derzeit an einem Programm, das eine ziemlich komplexe Struktur der verschachtelten Winform-Steuerelemente verwendet, die dynamisch ändert, wie ein Benutzer bestimmte Auswahlen trifft. Um detaillierter auf das spezifische Layout der Steuerelemente einzugehen, wäre für diese Frage zu umfangreich.Wie verschachtelte Winform-Steuerelement Flicker Probleme beheben
Wenn eine Auswahl getroffen wird, werden viele Aktualisierungen am zugrunde liegenden Modell vorgenommen, das von den Benutzersteuerelementen gesteuert wird. Dies führt dann zu einer Reihe von entsprechenden Änderungen in der Größe/Position/Sichtbarkeit der angezeigten Steuerelemente. All diese Änderungen führen zu einem schmerzhaft intensiven Flackern der Steuerelemente auf dem Bildschirm. Ich muss das irgendwie beheben, so dass der Bildschirm jedes Mal, wenn der Benutzer eine Auswahl trifft, grundsätzlich eingefroren wird, bis alle Steuerungsaktualisierungen abgeschlossen sind.
Ich habe versucht, die Control.SuspendLayout/Control.ResumeLayout Methoden an vielen verschiedenen Orten und Wegen zu verwenden, und ich kann das verrückte Flackern nicht beseitigen. Ich dachte, dass das Aussetzen des Layouts auf dem Stammsteuerelement während der Änderungen das Problem beheben würde, aber es scheint, dass dieses SuspendLayout nicht hilft, wenn untergeordnete Steuerelemente geändert werden.
Muss ich einen anderen Ansatz als SuspendLayout verwenden? Gibt es eine Möglichkeit, ich kann SuspendLayout debuggen, um zu sehen, warum es nicht scheint, auf alle untergeordneten Steuerelemente zu kaskadieren?
diese Antwort funktionierte für mich http://stackoverflow.com/questions/487661/how-do-i-suspend-painting-for-a-control-and-its-children – wal