[C#] タイマによりボタン押しっぱなしイベントを検知する

昨日の続きで、ボタンを押され続けていたらタイマを発動する簡単なプログラムを作ってみた。

1つのボタンと1つのテキストボックスがあり、ボタンが押され続けている間、数字を1ずつ加算しながらテキストボックスに表示していく、というものだ。例によって端折っている。


private System.Threading.Timer m_Timer = null;
private int m_i=0;

public Form1()
{
// 待機状態でタイマ作成
m_Timer = new System.Threading.Timer(
new System.Threading.TimerCallback(func),
null,
System.Threading.Timeout.Infinite,
100
);
}

public void func(Object obj)
{ // こいつがタイマから呼び出される
textBox1.Text = m_i.ToString();
++m_i;
}
private void button1_MouseDown(object sender, System.Windows.Forms.MouseEventArgs e)
{ // 500ミリ秒待ったあとタイマ起動
m_Timer.Change(500,100);
}

private void button1_MouseUp(object sender, System.Windows.Forms.MouseEventArgs e)
{ // タイマ待機
m_Timer.Change(System.Threading.Timeout.Infinite, 100);
}