2017-02-25 101 views
0

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

这是Tick事件:

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

禁用计时器。 –

回答

1

您需要调用ShowDialog前禁用定时器,使移动timer1.Enabled = false;到第一线。此外,我建议你添加frm.Closed事件,以便您关闭第二种形式后,主窗体将关闭:这是你想要什么:你显示对话框之前

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

它工作,非常感谢你!并且对于这个建议。 – Elena

+0

@Elena欢迎您。 –

3

frm.ShowDialog();是一个阻塞调用,因此下一行不会得到执行,直到新的形式被关闭。确保您通过禁用计时器开始:

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

它的工作原理,谢谢! – Elena