Forum: PC-Programmierung VS 2013: C#-Frage zur Textbox


von Berny (Gast)


Lesenswert?

In einer while-Schleife, die pro Durchlauf 200 ms dauert, aktualisiere 
ich zwei Textboxen, um mir die Anzahl der fehlerhaften bzw. korrekt 
übertragenen Datensätze anzeigen zu lassen.

Erwartet habe ich, dass die Zahlen von 1 bis 100 durchlaufen. Bekomme 
aber Zahlen, die in zwei, drei größeren Abständen (19, 72, 100) 
angezeigt werden.

Woran liegt das? Was muss ich ändern?

1
                ... 
2
                textBoxACK.Text = Convert.ToString(ACKcounter);
3
                textBoxNAK.Text = Convert.ToString(NAKcounter);
4
                ...

von Thomas (Gast)


Lesenswert?

Der von dir gepostete Code ist soweit korrekt!

Der Fehler liegt woanders! Poste mal den Rest!

von Berny (Gast)


Lesenswert?

Schon erledigt. Es funktioniert. Danke Thomas.

[code]
                textBoxACK.Text = Convert.ToString(ACKcounter);
                textBoxACK.Refresh();
                textBoxNAK.Text = Convert.ToString(NAKcounter);
                textBoxNAK.Refresh();
[/code

von Thomas (Gast)


Lesenswert?

Wäre aber nicht ein Label besser als ne Textbox?
Also
1
Label1ACK.text = "22.09.2015 ist Weltuntergang und ich habe keine Zeit dafür"

von Berny (Gast)


Lesenswert?

Thomas schrieb:
> Wäre aber nicht ein Label besser als ne Textbox?
> Also
>
1
> Label1ACK.text = "22.09.2015 ist Weltuntergang und ich habe keine Zeit 
2
> dafür"
3
>

Die Textbox habe ich genommen, weil sie so einen hübschen Rand auf der 
Grafikoberfläche hat.

von Fuzzi59 (Gast)


Lesenswert?

Am einfachsten ist es wenn du das mit einem Timer löst, der gestartet 
wird und nicht gestoppt wird. Wenn die 200 ms abgelaufen sind kannst du 
über das Tick-Event eine Funktion aufrufen lassen, die den Text deiner 
Textbox bzw. deines Labels ändert.
Und lass das Refresh() weg! Dadurch erhälst du verschiedenen Zeiten in 
deiner Ausgabe.

von Fuzzi59 (Gast)


Lesenswert?

Die Zeit deiner while-Schleife ergibt sich durch 200ms warten + Zeit für 
das Refresh. Bei dem Timer natürlich die while-Schleife weglassen. 
Dadurch, dass du den Timer nie stoppst erhältst du automatisch eine 
Endlosschleife der Tick-Funktion. Falls du nur ein bestimmte Anzahl an 
Durchläufen haben willst musst den Timer unter einer Bedingung (am 
besten in der Tick-Funktion)  stoppen (und reseten). Dafür machst du den 
Timer und den Zähler global.

von df (Gast)


Lesenswert?

my.application.doevents einfügen und es wird funktionieren.
Lass die Refresh weg.

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.