c# Timer问题
问题:C#程序,以下代码第一次按按钮是正常的,比如说TextBox1里输入5,TextBox1里的值是每秒减1的,但是第二次再输数字就变成每秒减2了,第三次是每秒减3了。为什么会这样,该怎么改?
       private void button7_Click(object sender, EventArgs e)
         {
             try
             {
                 if (textBox1.Text == "")
                 {
                     throw new FormatException("please input time");
                 }
                 timeleft = int.Parse(textBox1.Text);
                 timer1.Enabled = true;
                 timer2.Enabled = true;
                 timer1.Tick += new EventHandler(timer1_Tick);
                 timer2.Tick += new EventHandler(timer2_Tick);
                 timer1.Interval = timeleft * 1000;
                 timer2.Interval = 1 * 1000;
                 //timer1.Interval = timeleft * 60 * 1000;
                 //timer2.Interval = 1 * 60 * 1000;
                 timer1.Start();
                 timer2.Start();              
             }
             catch (FormatException fEx)
             {
                 MessageBox.Show(fEx.Message);
             }
         }
         private void timer1_Tick(object sender, EventArgs e)
         {
             timer1.Enabled = false;
             timer2.Enabled = false;
             MessageBox.Show("time is up");  
         }
         private void timer2_Tick(object sender, EventArgs e)
         {
             timeleft--;
             textBox1.Text = timeleft.ToString();
         }
------解决方案--------------------
timer1.Tick += new EventHandler(timer1_Tick);
 timer2.Tick += new EventHandler(timer2_Tick);
看见这两行了吗,你点击一次按钮,就多绑定一次,这样就会多次绑定,本来timer5秒一次,这样就可能5秒多次了,把绑定事件放到外面去,初始化绑定一次就好了,不要每次点击都绑定
------解决方案--------------------
因为你每次点击按钮的时候,都进行了事件绑定
timer1.Tick += new EventHandler(timer1_Tick);
timer2.Tick += new EventHandler(timer2_Tick);