繁体   English   中英

计时器在停止或禁用后不会停止

[英]Timer won't stop after being stopped or disabled

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

这是滴答事件:

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

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

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

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

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM