ユーザーがTextBox
に何かを入力するまで、自分のコードの実行をブロックする必要があります。"最後の"イベントが発生するのを待つ
しかし、この特定のケースでは、実際に「ユーザーが入力を完了するまで」待つ必要があります。つまり、私は初めてTextChanged
イベントが発生するのを待っているのではなく、最後に起動してから500ms以上経過してからメソッドを実行していきます。
現在、TextChanged
イベントが発生するたびにタイマーが再起動され、タイマーのTick
イベントが発生すると、ユーザーが「入力を完了しました」ということを意味するタイマーが使用されています。
今このアプローチには三つの主要な問題はしかしあります。これまで、この
Timer
を使用してより良い/きれいな方法がなければならない
- 私は実行をブロックする必要はありませんでしたユーザーが入力を完了するまで、基本的にはコードを
Tick
イベントハンドラに追加していますが、それは変更されません。 - タイムアウトを設定する必要があります。ユーザーが一定の時間内に入力を完了していない場合は、ユーザーを待たずにメソッドに戻るだけです。
どのようにすればいいですか?
これは、タイマーをリセットしてx時間後にコードを実行すると、ユーザーが入力を完了したことを示していることがわかります。あるいは、コントロールの「Leave」イベントにコードを入れて、コードを実行するためにコードをタブから外してもかまいませんが、それはユーザーエクスペリエンスではないかもしれません。 –