Entwickler-Ecke
WinForms - Countdown mit Timer
Heddi - Sa 02.03.13 13:12
Titel: Countdown mit Timer
Hallo,
bei meinem Programm möchte ich in eine Textbox einen Wert zb. 10 eintragen und ein Countdown soll dann von 10 bis 0 runterzählen und eine MessageBox erscheinen lassen.
Leider läuft der Timer nicht. Ich habe schon einige Foren und Tutorials durchgesehen aber ich finde nicht den Fehler in meinem Code. Ich hoffe das Ihr mir weiterhelfen könnt. :)
C#-Quelltext
1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13: 14: 15: 16: 17: 18: 19: 20: 21: 22: 23: 24: 25: 26: 27: 28: 29: 30: 31: 32: 33: 34: 35: 36: 37: 38: 39: 40: 41: 42: 43: 44:
| int timeint; private void btnStart_Click(object sender, EventArgs e) { if (txbTime.Text == "") { MessageBox.Show("Keine Zeitangabe vorhanden"); } else { string time = txbTime.Text; bool parsed = Int32.TryParse(time, out timeint); txbTime.Enabled = false; txbSoll.Enabled = false; btnStart.Enabled = false; btnStop.Enabled = true; timer1.Enabled = true; timer1.Start(); } }
private void timer1_Tick(object sender, EventArgs e) { if (timeint == 0) { timer1.Stop(); timer1.Enabled = false; MessageBox.Show("Messung beendet"); } else { timeint = timeint - 1; } }
private void btnStop_Click(object sender, EventArgs e) { timer1.Stop(); timer1.Enabled = false; MessageBox.Show("Messung abgebrochen"); txbTime.Enabled = true; txbSoll.Enabled = true; btnStart.Enabled = true; btnStop.Enabled = false; } |
Gruß Heddi
papa69 - Sa 02.03.13 14:25
hi,
(ich habe schon lange nichts mehr mit Timer gemacht)
ich gehe davon aus, dass du das timer1.Interval ( = 1000; //für 1 sec) gesetzt hast und den timer_tick-Event angemeldet hast ... ?!
Ansonsten würde ich in Zeile 11 direkt schreiben:
C#-Quelltext
1:
| timeint = Int32.Parse(txbTime.Text); |
dann würdest du dir Zeile 10 auch noch sparen.
Ansonsten einfach mal mittels Debugger Schritt-für-Schritt (Break-Point setzen und dann F11) das Programm durchlaufen lassen und schauen, ob deine Variablen/Strings richtig gelesen/ausgewertet werden..
Edit 1:
Ich sehe gerade, es gibt noch eine andere Möglichkeit:
C#-Quelltext
1:
| timeint = Convert.ToInt(txbTime.Text); |
Th69 - Sa 02.03.13 22:18
Hallo papa69,
die von Heddi verwendete TryParse-Methode ist schon die richtige, da diese im Gegensatz zu deinen beiden genannten Methoden keine Exception wirft, die man sonst abfangen müßte.
Heddi - So 03.03.13 15:49
Hi papa69, Th69,
ja den Timer Intervall hab ich im Eigenschaftenfenster von 100 auf 1000 gestellt.
Habe jetzt auch meinen Fehler gefunden. Hatte vergessen unter den Eigenschaften das Tick Verhalten anzumelden.
Danke für die Hilfe! :)
Entwickler-Ecke.de based on phpBB
Copyright 2002 - 2011 by Tino Teuber, Copyright 2011 - 2025 by Christian Stelzmann Alle Rechte vorbehalten.
Alle Beiträge stammen von dritten Personen und dürfen geltendes Recht nicht verletzen.
Entwickler-Ecke und die zugehörigen Webseiten distanzieren sich ausdrücklich von Fremdinhalten jeglicher Art!