Kann ich mein UI-Rendering einfrieren, während mein Formular geladen wird?

8

Gibt es eine Möglichkeit, alle UI Update-Befehle in Winforms anzuhalten?

Oder ich habe ein leichtes Gefühl, dass ich versuche, den völlig falschen Weg zu gehen, also gibt es einen anderen Weg um mein Problem zu lösen: Ich lade grundsätzlich einen gespeicherten Zustand eines Steuerelements, das neue Steuerelemente darüber lädt. Allerdings mache ich etwas davon im UI-Thread, und einige der Daten werden von einem anderen Thread geladen, der dann die Benutzeroberfläche füllt.

Der Effekt, den ich beim Laden habe, ist, dass der Benutzer einige der Steuerelemente an einer Stelle sehen kann, dann an eine andere Stelle im Formular wechselt, Werte ändert usw.

Ich möchte stattdessen einen Ladebildschirm bekommen und die Steuerelemente im Hintergrund laden. Es ist eine ziemlich große Anwendung und es ist nicht so wichtig, also ist das Redesign meines Codes nicht wirklich eine Option.

Kann ich einfach alle Update () - Befehle auf einem Steuerelement stoppen, während eine Methode ausgeführt wird?

    
Connell 14.10.2011, 09:54
quelle

2 Antworten

12

Sie können das SuspendLayout und ResumeLayout Methoden, um das Setup der Benutzeroberfläche in einem Vorgang zu verpacken (ohne die Aktualisierung des Renderings) .

Grundsätzlich (angenommen SomeMethod ist in der Formularklasse):

%Vor%     
Steve B 14.10.2011, 09:58
quelle
4

Es hängt wirklich von Ihrer Formularlogik ab, im Allgemeinen sollten Sie die Methode Load oder Show nicht mit zu vielen Dingen überladen, damit das Formular schnell angezeigt und gezeichnet werden kann und immer responsiv aussieht.

In einigen Fällen könnte es hilfreich sein, die Methoden SuspendLayout und ResumeLayout zu verwenden, siehe hier: Control.SuspendLayout-Methode

    
Davide Piras 14.10.2011 10:00
quelle

Tags und Links