Autor Beitrag
Heddi
Hält's aus hier
Beiträge: 9



BeitragVerfasst: Sa 02.03.13 13:12 
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. :)

ausblenden volle Höhe 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 == "")     // Falls Eingabefeld leer ist
            {
                MessageBox.Show("Keine Zeitangabe vorhanden");
            }
            else
            {
                string time = txbTime.Text;                         // Textboxeingabe string zuweisen
                bool parsed = Int32.TryParse(time, out timeint);    // Eingabe von string zu Int32 umwandeln
                txbTime.Enabled = false;                            // Textboxen und Buttons aktivieren bzw deaktivieren
                txbSoll.Enabled = false;
                btnStart.Enabled = false;
                btnStop.Enabled = true;
                timer1.Enabled = true;
                timer1.Start();                                     // Timer starten
            }
        }

        private void timer1_Tick(object sender, EventArgs e)
        {
            if (timeint == 0)                                       // Wenn timeint = 0, Timer stoppen und MsgBox
            {
                timer1.Stop();
                timer1.Enabled = false;
                MessageBox.Show("Messung beendet");
            }
            else
            {
                timeint = timeint - 1;                              // andernfalls 1 abziehen
            }
        }

        private void btnStop_Click(object sender, EventArgs e)      // Stop button: Messung abbrechen
        {
            timer1.Stop();
            timer1.Enabled = false;
            MessageBox.Show("Messung abgebrochen");
            txbTime.Enabled = true;
            txbSoll.Enabled = true;
            btnStart.Enabled = true;
            btnStop.Enabled = false;
        }


Gruß Heddi
papa69
ontopic starontopic starontopic starontopic starofftopic starofftopic starofftopic starofftopic star
Beiträge: 79
Erhaltene Danke: 23

Win 10, Ubuntu
C#, Java, C
BeitragVerfasst: 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:

ausblenden C#-Quelltext
1:
timeint = Int32.Parse(txbTime.Text);  //wobei evtl. noch ein ausdrückliches .ToString() anzuhängen wäre					

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:
ausblenden C#-Quelltext
1:
timeint = Convert.ToInt(txbTime.Text); //evt. auch mit .ToString()					

_________________
Daniel Bauer
... fatal ist nur, wenn sich das Licht am Ende des Tunnels als entgegenkommender ICE entpuppt ...

Für diesen Beitrag haben gedankt: Heddi
Th69
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Moderator
Beiträge: 4796
Erhaltene Danke: 1059

Win10
C#, C++ (VS 2017/19/22)
BeitragVerfasst: 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.

Für diesen Beitrag haben gedankt: Heddi
Heddi Threadstarter
Hält's aus hier
Beiträge: 9



BeitragVerfasst: 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! :)