トップ回答者
テキストボックスコントロールで、別のフォームに移る時も_Leaveを通るようにするには

質問
回答
-
LostFocus イベントは下位レベルのイベントであり、あまり推奨されていません。デザイナからイベントにハンドラを追加することはできません。コードから直接 += で追加する必要があります。
ハンドラの追加については 方法 : Intellisense を使用してイベントをフックする (C#) が参考になるでしょう。幸い LostFocus はインテリセンスの候補で出てきます。
ただ、推奨されてないだけあって問題もあるので、MSDN で LostFocus の注意書きをよく確認してください。
// でも、一旦他のウィンドウに切り替えるだけで Validator が動くのはヤだなぁ。- 回答としてマーク クサキ 2009年7月30日 7:06
-
また、”Intellisense を使用してイベントをフック”で作るとthrow new NotImplementedException(); が出来ます。
あるとコンパイルエラーになるのでカットして動かしています。
throw new NotImplementedException();はどう考えたら良いのでしょうか?
個人的には、「ここ後で実装すべし」のリマインダー的に捉えています。
よくプログラミングのノウハウにある、「封じ手」的な。(封じ手=明日実装すべきところをわざとコンパイルエラーが発生するじょうたいにして帰る)
なので、ただイベントの中身を空っぽにしてビルドが通るようにしてはだめで、未実装の場合には例外を throw する状態にしておくべきかと。
いざデバッグを開始してみたら、「あら、ここ実装してないじゃない」という事態になると悲しいので。- 回答としてマーク クサキ 2009年7月30日 7:06
-
また、”Intellisense を使用してイベントをフック”で作るとthrow new NotImplementedException(); が出来ます。
Not Implemented、つまり”実装されていません”を示す例外です。
あるとコンパイルエラーになるのでカットして動かしています。
throw new NotImplementedException();はどう考えたら良いのでしょうか?
自動的にコードを挿入したのはいいが、中身の実装を忘れている人への注意みたいなものと思えば良いと思います。
きちんとイベントハンドラ実装する時に、throw new NotImplementedException(); の行は削除して良いでしょう。
なお、throw new NotImplementedException(); によって生じる現象はコンパイルエラーではなく、(実行時)例外と呼ばれるものです。
この機会にでも、用語についてご確認下さい。
解決した場合は、参考になった返信に「回答としてマーク」のボタンを利用して、回答に設定しましょう(複数に設定できます)。- 回答としてマーク クサキ 2009年7月30日 7:06
すべての返信
-
LostFocus イベントは下位レベルのイベントであり、あまり推奨されていません。デザイナからイベントにハンドラを追加することはできません。コードから直接 += で追加する必要があります。
ハンドラの追加については 方法 : Intellisense を使用してイベントをフックする (C#) が参考になるでしょう。幸い LostFocus はインテリセンスの候補で出てきます。
ただ、推奨されてないだけあって問題もあるので、MSDN で LostFocus の注意書きをよく確認してください。
// でも、一旦他のウィンドウに切り替えるだけで Validator が動くのはヤだなぁ。- 回答としてマーク クサキ 2009年7月30日 7:06
-
> FormのDeactivateでValidate()を呼び出して
> テキストボックスでは_Leaveの代わりに_Validatingイベントを使ったらどうでしょうか
Validate()が無く出来ませんでした。
LostFocus イベントを使うことにより、思い通りの動きになりました。
ありがとうございました。
一応、問題は解決しましたが、以下の点もお願いします。> LostFocus イベントは下位レベルのイベントであり、あまり推奨されていません。
簡単に読みましたが、良くわかりませんでした。何が問題なのでしょうか?また、”Intellisense を使用してイベントをフック”で作るとthrow new NotImplementedException(); が出来ます。
あるとコンパイルエラーになるのでカットして動かしています。
throw new NotImplementedException();はどう考えたら良いのでしょうか? -
また、”Intellisense を使用してイベントをフック”で作るとthrow new NotImplementedException(); が出来ます。
あるとコンパイルエラーになるのでカットして動かしています。
throw new NotImplementedException();はどう考えたら良いのでしょうか?
個人的には、「ここ後で実装すべし」のリマインダー的に捉えています。
よくプログラミングのノウハウにある、「封じ手」的な。(封じ手=明日実装すべきところをわざとコンパイルエラーが発生するじょうたいにして帰る)
なので、ただイベントの中身を空っぽにしてビルドが通るようにしてはだめで、未実装の場合には例外を throw する状態にしておくべきかと。
いざデバッグを開始してみたら、「あら、ここ実装してないじゃない」という事態になると悲しいので。- 回答としてマーク クサキ 2009年7月30日 7:06
-
また、”Intellisense を使用してイベントをフック”で作るとthrow new NotImplementedException(); が出来ます。
Not Implemented、つまり”実装されていません”を示す例外です。
あるとコンパイルエラーになるのでカットして動かしています。
throw new NotImplementedException();はどう考えたら良いのでしょうか?
自動的にコードを挿入したのはいいが、中身の実装を忘れている人への注意みたいなものと思えば良いと思います。
きちんとイベントハンドラ実装する時に、throw new NotImplementedException(); の行は削除して良いでしょう。
なお、throw new NotImplementedException(); によって生じる現象はコンパイルエラーではなく、(実行時)例外と呼ばれるものです。
この機会にでも、用語についてご確認下さい。
解決した場合は、参考になった返信に「回答としてマーク」のボタンを利用して、回答に設定しましょう(複数に設定できます)。- 回答としてマーク クサキ 2009年7月30日 7:06