Steuerelement fertig zeichnen

01/10/2007 - 16:18 von Olli73 | Report spam
Hallo Zusammen,

habe immer mal wieder das Problem, das ein Steuerelement nicht fertig
gezeichnet wird, wenn im Hintergrund größere Berechnungen oder
Datenbankabfragen verarbeitet werden. Leider habe ich keine Lösung bisher
dafür gefunden...

Beispiel:

Über ein Click-Event eines Buttons wird eine Datenbankabfrage erstellt. Dazu
blende ich z.B. ein Progressbar ein. Gleichzeitig schalte ich ein Label auf
visible = true, welches z.B. als Text "Bitte warten ... Daten werden geladen"
enthàlt.

Das Progressbar wird ohne Probleme aktualisiert. Allerdings wird der Text im
Label-Steuerelement erst nach Abschluss der Datenverarbeitung akualisiert (es
ist nur ein leeres Feld sichtbar). Natürlich sollte aber sofort der Text
sichtbar werden, da ich mir ja ansonsten die Textanzeige schenken könnte.

Das Problem habe ich auch bei einer Combobox. Nach Auswahl wird z.B. etwas
aktualisiert. Sollte dieser Vorgang lànger dauern, bleibt die Combobox
unschön "halb aufgeklappt" und schließt sich erst nach Abschluß der
Hintergrundarbeit.

Hat jemand eine Lösung, wie man es erzwingen kann, dass ein Control erst
vollstàndig gezeichnet wird und erst dann die nachfolgenden Befehle
ausgeführt werden?

Vielen Dank!
 

Lesen sie die antworten

#1 Peter Bucher [MVP]
01/10/2007 - 16:54 | Warnen spam
Hallo Olli73

Hat jemand eine Lösung, wie man es erzwingen kann, dass ein Control erst
vollstàndig gezeichnet wird und erst dann die nachfolgenden Befehle
ausgeführt werden?


Es gibt zwar die quick&dirty Workarounds bei denen mit
Application.DoEvents() gearbeitet wird, jedoch kann das zu Problemen führen,
und es ist definitiv nicht der richtige Weg.

Was du brauchst sind Threads, einen seperaten Thread der neben dem GUI
Thread làuft und diesen nicht behindert.
Das .NET Framework hat eine nützliche Klasse, die dir das schwierigste schon
mal abnimmt.

Ich würde dir den BackGroundWorker für den Anfang empfehlen.
- http://msdn2.microsoft.com/de-de/library/8xs8549b(VS.80).aspx

Gruss, Peter Bucher
Microsoft MVP - Visual Developer ASP / ASP.NET, Switzerland
http://www.aspnetzone.de/ - ASP.NET Zone, die ASP.NET Community
http://www.aspnetzone.de/blogs/peterbucher/ - Auf den Spuren von .NET

Ähnliche fragen