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

あなたが何をしようとしているのかわかりません。ティックイベントハンドラーを1回だけ実行させようとしていますか?その場合、現在の設定では、最初のメッセージボックスが閉じられたときにのみタイマーがティックイベントを発生させなくなります。この問題を回避するには、tm_Tickメソッドの2行を切り替えます。

また、クリックハンドラーでタイマーを設定しないでください。あなたはそれを始めるべきです。私はあなたがこれの行で何かをすることを提案します:

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 に答える