Willkommen auf myCSharp.de! Anmelden | kostenlos registrieren
 | Suche | FAQ

Hauptmenü
myCSharp.de
» Startseite
» Forum
» Suche
» Regeln
» Wie poste ich richtig?

Mitglieder
» Liste / Suche
» Wer ist online?

Ressourcen
» FAQ
» Artikel
» C#-Snippets
» Jobbörse
» Microsoft Docs

Team
» Kontakt
» Cookies
» Spenden
» Datenschutz
» Impressum

  • »
  • Community
  • |
  • Diskussionsforum
Steuerelement sofort anzeigen und nicht erst am Ende der Schleife
slang
myCSharp.de - Member



Dabei seit:
Beiträge: 5

Themenstarter:

Steuerelement sofort anzeigen und nicht erst am Ende der Schleife

beantworten | zitieren | melden

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
private Nachricht | Beiträge des Benutzers
inflames2k
myCSharp.de - Experte

Avatar #AARsmmPEUMee0tQa2JoB.png


Dabei seit:
Beiträge: 2.295

beantworten | zitieren | melden

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 | Spielkartenbibliothek
private Nachricht | Beiträge des Benutzers
slang
myCSharp.de - Member



Dabei seit:
Beiträge: 5

Themenstarter:

beantworten | zitieren | melden

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.
private Nachricht | Beiträge des Benutzers
slang
myCSharp.de - Member



Dabei seit:
Beiträge: 5

Themenstarter:

beantworten | zitieren | melden

Gibt es denn nicht einen Befehl der das Steuerelement nicht hinzufügt wie .Add sondern direkt anzeigt?
private Nachricht | Beiträge des Benutzers
Programmierhans
myCSharp.de - Experte

Avatar #avatar-1651.gif


Dabei seit:
Beiträge: 4.221
Herkunft: Zentralschweiz

beantworten | zitieren | melden

Nein
Früher war ich unentschlossen, heute bin ich mir da nicht mehr so sicher...
private Nachricht | Beiträge des Benutzers
herbivore
myCSharp.de - Experte

Avatar #avatar-2627.gif


Dabei seit:
Beiträge: 49.486
Herkunft: Berlin

beantworten | zitieren | melden

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
private Nachricht | Beiträge des Benutzers