2

如何停止 Winforms 计时器触发 Tick 事件?

这是我的代码:

    Timer tm = new Timer();

    private void button1_Click(object sender, EventArgs e)
    {
        tm = new Timer();
        tm.Interval = 1000;
        tm.Tick += new EventHandler(tm_Tick);
        tm.Start();
    }

    void tm_Tick(object sender, EventArgs e)
    {
        MessageBox.Show("hi");
        tm.Stop();

    }
4

1 回答 1

5

我不确定您要做什么。您是否试图让 tick 事件处理程序只执行一次?如果是这种情况,您当前的设置只会在第一个消息框关闭时停止计时器触发滴答事件。为避免此问题,请在 tm_Tick 方法中切换两行。

此外,您不应在点击处理程序中设置 Timer。你应该只启动它。我建议您按照以下方式做一些事情:

Timer tm;
private void form1_Load(object sender, EventArgs e)
{
    tm = new Timer();
    tm.Interval = 1000;
    tm.Tick += new EventHandler(tm_Tick);
}
private void button1_Click(object sender, EventArgs e)
{
    tm.Start();
}

void tm_Tick(object sender, EventArgs e)
{
    tm.Stop();
    MessageBox.Show("hi");
}
于 2012-10-11T10:33:53.470 回答