Laden...

Steuerelement sofort anzeigen und nicht erst am Ende der Schleife

Erstellt von slang vor 10 Jahren Letzter Beitrag vor 10 Jahren 1.537 Views
Thema geschlossen
S
slang Themenstarter:in
5 Beiträge seit 2013
vor 10 Jahren
Steuerelement sofort anzeigen und nicht erst am Ende der Schleife

Hallo,
ich habe mehrere Steuerelemente erstellt und möchte sie nacheinander ausgeben.

Ich füge die Steuerelemente in einer for-Schleife mit this.Controls.Add in meine Liste ein. Allerdings werden erst nachdem die Schleife fertig durchgelaufen ist alle Steuerelemente angezeigt.

Gibt es einen Befehl bei dem die Elemente bei jedem Durchlauf angezeigt werden?

Grüße Simon

2.298 Beiträge seit 2010
vor 10 Jahren

Hallo,

das die Controls erst nach Beendigung der Schleife angezeigt werden ist korrekt. Deine Schleife bremst schließlich den GUI-Thread, der erst nach Abschluss der Schleife wieder die Möglichkeit hat die Controls zu zeichnen.

Wieso musst du die Controls direkt anzeigen und kannst nicht auf die Fertigstellung warten?

Es gibt eine Methode die man aufrufen könnte, die ich so aber nicht empfehle, weil die Verwendung und das sogar speziell in diesem Fall unsauber ist.

Wissen ist nicht alles. Man muss es auch anwenden können.

PS Fritz!Box API - TR-064 Schnittstelle | PS EventLogManager |

S
slang Themenstarter:in
5 Beiträge seit 2013
vor 10 Jahren

Ich bin einen Suchbaum am erstellen.
Mit jedem Buttonklick erstelle ich eine neue Ebene.
Ich hätte jetzt gerne, dass die einzelnen Felder (Steuerelemente) in einer Ebene nach und nach erscheinen und nicht alle auf einmal nach Beendigung der Schleife.

S
slang Themenstarter:in
5 Beiträge seit 2013
vor 10 Jahren

Gibt es denn nicht einen Befehl der das Steuerelement nicht hinzufügt wie .Add sondern direkt anzeigt?

4.221 Beiträge seit 2005
vor 10 Jahren

Nein

Früher war ich unentschlossen, heute bin ich mir da nicht mehr so sicher...

49.485 Beiträge seit 2005
vor 10 Jahren

Hallo slang,

dein Problem ist auch nur eine weitere Variante von [FAQ] Warum blockiert mein GUI?

Die Schleife gehört in einen Worker-Thread. Die GUI-Elemente müssen aber weiterhin im GUI-Thread erzeugt werden, siehe [FAQ] Controls von Thread aktualisieren lassen (Control.Invoke/Dispatcher.Invoke).

Wenn du die GUI-Elemente in der Schleife erzeugst, die die eigentliche Berechnung anstellt, ist sowieso was falsch. Das Modell sollte das GUI gar nicht kennen (Trennung von Modell und GUI). Feuere im Modell stattdessen Events, auf die das GUI reagieren kann, siehe [FAQ] Eigenen Event definieren.

Bitte beachte [Hinweis] Wie poste ich richtig? Punkt 1.1.1 und 1.1.

herbivore

Thema geschlossen