Aktualisierung des toolStripStatusLabel funktioniert nicht (bzw. Zähler)
-
Hallo leute,
ich habe eine kleien Software geschrieben, welches einen bestimmten Algo ausführt. Bei einem bestimmten Ergebniss springt es in die for-schleife und soll dann Rückwärts zählen (counter). Leider zeigt es mir das Endergebnis an und zählt nicht sekundenweise zurück...
Hier der Codesnippet:
... toolStripStatusLabel3->Text="Es ist soweit in..."; for(int i=10; i>0; i--){ this->toolStripStatusLabel2->Text=""+i; Sleep(1000); } ...
Jemand eine Ideee wieso mein toolStripStatusLabel nicht zur Laufzeit aktualisiert wird?
Frohes neues euch allen im übrigen
lg
-
Die Oberfläche muss zum Zeichnen eine Message-Pump haben, damit die Zeichenoperationen ausgeführt werden. Du hast hier eine "Schleife", wo gar niemand die Möglichkeit hat etwas zu zeichnen... Auch blockiert das "Sleep" Deine Oberfläche.
Verwende einen Timer und erhöhe in dem Timer-Event Deinen Zähler. Dann funktioniert es.
Beachte aber bitte auch, dass es keinen Sinn macht C++/CLI zu verwenden. Verwende bitte C#:
http://blog.kalmbach-software.de/de/2010/03/05/ccli-und-winforms-macht-keinen-sinn/
-
Hallo Jochen,
vielen Dank für die schnelle Rückmeldung.
Die Oberfläche muss zum Zeichnen eine Message-Pump haben, damit die Zeichenoperationen ausgeführt werden.
Was ist Message-Pump?
Auch blockiert das "Sleep" Deine Oberfläche.
Verwende einen Timer und erhöhe in dem Timer-Event Deinen Zähler. Dann funktioniert es.
Mit meinen Sleep wollte ich das zählen in sekunden Schritten ausführen Wie würde, denn ein Korrekter Ansatz mit dem Timer aussehen?
-
1. http://www.lmgtfy.com/?q=message+pump+windows+forms
2. http://www.lmgtfy.com/?q=timer+windows+forms
-
Habe nun einen timer, aber es funkt irgendwie immer noch nicht
CodeSnippet:
timer1->Intervall=5000; //Counting 5 sec
timer1->Start();toolStripStatusLabel1->Text=timer1->ToString();
irgendwie müsste ich doch da was mit einer Schleife machen, da er die GUI nicht aktualisiert oder?!
-
Du musst den Event-Handler registrieren und dann dort das hochzählen machen!
In dem Beispiel im ersten Link ist doch auch ein EventHandler registriert (TimerEventProcessor)