onkeyPress イベントとタイマーを使用してメソッドを実行しています。テキストボックスがあります。ユーザーがテキストボックスにサーバー名を入力できるようにします。伝統的に、キーを押すたびにイベントが発生しますが、メソッドをタイマー経過イベントに入れ、ユーザーが 5 秒間待機したときにのみタイマーがアクションを起動するようにします。以下は私のタイマーです。
private void tbServer_KeyPress(object sender, KeyPressEventArgs e)
{
//atimer.Stop();
atimer = new System.Timers.Timer();
atimer.Interval = 5000;
atimer.AutoReset = false;
if (atimer.Enabled)
{
return;
}
else
{
atimer.Elapsed += new System.Timers.ElapsedEventHandler(OnTimedEvent);
atimer.Enabled = true;
}
}
上記から、タイマーの別のインスタンスが実行されていない場合にのみ、タイマーで経過イベントを発生させたい (つまり、タイマーの 5 秒間隔の前にキーを押しても無視する)。以下の経過タイマーイベントで実行が完了した後、タイマーを停止します
private void OnTimedEvent(object source, System.Timers.ElapsedEventArgs e)
{
if (ping(tbServer.Text, 1))
{
string txt = "Server Matched";
SetText(txt, true);
atimer.Enabled = false;
}
else
{
string txt = " Invalid Server Address";
SetText(txt, false);
atimer.Enabled = false;
}
}
上記のコードは、条件に関係なく、キーの種類ごとにタイマー経過イベントを発生させます。ユーザーが 5 秒間隔を空けなかったときにキーの種類を無視するにはどうすればよいですか?