如何在点击事件中停止计时器?在 C#.Net 中?

Ssa*_*har 2 winforms

如何停止 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();

    }
Run Code Online (Sandbox Code Playgroud)

Dea*_*Dog 5

我不确定你要做什么。您是否试图让滴答事件处理程序只执行一次?如果是这种情况,您当前的设置只会在第一个消息框关闭时停止计时器触发滴答事件。为避免此问题,请在 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");
}
Run Code Online (Sandbox Code Playgroud)