停止或禁用后,定时器不会停止

时间:2017-02-25 14:58:20

标签: c# winforms

表单上的计时器有问题。我已从属性中启用它并设置间隔值5000.在tick事件中,我想关闭当前表单并打开form1,但它不起作用。当前表单关闭,form1每5秒打开一次,不仅一次。我该怎么办?提前谢谢!

这是刻度事件:

private void timer1_Tick(object sender, EventArgs e)
{
  this.Hide();
  Form1 frm = new Form1();
  frm.ShowDialog();
  timer1.Enabled = false;
}

2 个答案:

答案 0 :(得分:3)

frm.ShowDialog();是一个阻止调用,因此在新表单关闭之前,下一行不会被执行。确保从禁用计时器开始:

private void timer1_Tick(object sender, EventArgs e)
{
    timer1.Enabled = false;
    this.Hide();
    Form1 frm = new Form1();
    frm.ShowDialog();
}

答案 1 :(得分:1)

您需要在调用ShowDialog之前禁用计时器,因此请将timer1.Enabled = false;移至第一行。另外,我建议您添加frm.Closed事件,以便在关闭第二个表单后关闭主表单:这就是您想要的:

timer1.Enabled = false;
Hide();
Form1 frm = new Form1();
frm.Closed += (s, args) => Close();
frm.ShowDialog();