2016-03-24 14 views
1

Ich möchte meinen Timer basierend auf Benutzereingaben herunterzählen lassen. DieseBenutzereingabe für Timer-Countdown

ist, was meine Form wie folgt aussieht:

this is my timercountdown

und dies ist mein Code:

private int counter=80; 
DateTime dt = new DateTime(); 
private void button1_Click(object sender, EventArgs e) 
{ 
    progressBar1.Maximum = counter * 1000; 
    progressBar1.Step = 1000; 
    timer1 = new System.Windows.Forms.Timer(); 
    timer1.Tick += new EventHandler(timer1_Tick); 
    timer1.Interval = 1000; 
    timer1.Start(); 
    textBox1.Text = counter.ToString(); 
} 


private void timer1_Tick(object sender, EventArgs e) 
{ 
    counter--; 
    progressBar1.PerformStep(); 
    if (counter == 0) 
    { 
     timer1.Stop(); 
    } 
    textBox1.Text = dt.AddSeconds(counter).ToString("mm:ss"); 
} 

private void Form1_Load(object sender, EventArgs e) 
{ 
    timer1.Enabled = false; 
} 

private void button2_Click(object sender, EventArgs e) 
{ 
    timer1.Stop(); 
    textBox1.Clear(); 
    progressBar1.Value = 0; 
} 

Wie kann ich den Timer aktualisieren, wenn der Benutzer einen neuen Wert in das Textfeld eingibt ?

Antwort

1

Hängen Sie einen OnTextChanged-Eventhandler an Ihre Textbox1 an. Stoppen Sie den Timer, wenn TextInput- ändert

protect void textinput1_OnTextChange(object sender, EventArg e) { 
    button2_Click(sender, e); 

} 

Oder Sie können eine Benutzereingabe deaktivieren, wenn Timer startet und wieder aktivieren, sobald Timer gestoppt.

0

Setzen Sie den Textbox-aktivierten Wert einfach auf false, wenn Sie auf Start klicken. Und aktivieren Sie es erneut bei Stopp des Timers oder überprüft auf Cancel-Taste. Hier ist ein Code: textBox1.Enabled = false;
Und
textBox1.Enabled = true;