- ベストアンサー
C#のプログラミングについての質問
- C#のプログラミングについての質問です。会員検索の画面を作成していますが、入力内容のチェックとフォーカスの移動に問題があります。
- 画面にはテキストボックスを配置し、検索条件を入力します。Aのテキストボックスの入力内容をチェックし、誤っていればメッセージボックスで異常を知らせます。
- Aの入力が正しい場合はBにフォーカスを移動して、GotFocus処理を実行します。しかし、GotFocus処理が終了すると再度(4)に処理が遷移し、無限ループになってしまいます。解決策をご教授ください。
- みんなの回答 (1)
- 専門家の回答
質問者が選んだベストアンサー
※Windows Forms Application を想定しています。 まず,(2) で利用するイベントは LostFocus イベントではなく Validating イベントにします。 次に,(4) で入力が誤っていた場合は e.Cancel = true; を行うだけにします (自動でフォーカスは戻ります)。 また,入力が正しい場合にはフォーカスをプログラムで移動させるのではなく,TabIndex プロパティ値を並べておくことで対応します。 これで,最低限の動作はするはずです。 次に,(5) は GotFocus イベントではなく Enter イベントで行います。 (4) におけるフォーカス移動の問題については,Enter イベント等の MSDN にフォーカスを設定するなと書かれているため,TabIndex による解決が必要になります。 (5) で GotFocus イベントではなく Enter イベントを使うのは,同じく MSDN に Enter イベントを使うように書いてあるためです。 References) MSDN: Validating イベント http://msdn.microsoft.com/ja-jp/library/system.windows.forms.control.validating.aspx MSDN: Enter イベント http://msdn.microsoft.com/ja-jp/library/system.windows.forms.control.enter.aspx MSDN: GotFocus イベント http://msdn.microsoft.com/ja-jp/library/system.windows.forms.control.gotfocus.aspx