初級講座「5.勝手に発生するValidatingイベント」について への返答

投稿で使用できる特殊コードの説明。(別タブで開きます。)
本名は入力しないようにしましょう。
投稿した後で削除するときに使うパスワードです。返答があった後は削除できません。
返答する人が目安にします。相手が小学生か社会人かで返答の仕方も変わります。
最初の投稿が質問の場合、質問者が解決時にチェックしてください。(以降も追加書き込み・返信は可能です。)
※「過去ログ」について書くときはその過去ログのURLも書いてください。

以下の返答は逆順(新しい順)に並んでいます。

投稿者 K.K  (社会人) 投稿日時 2009/1/6 23:54:46
早速のレス、ありがとうございます。
不慣れでリンク忘れなど、申しわけありません。
いろいろ解決方法や、Validatingに関する話があるんですね。
大変、勉強になります。ありがとうございます。
投稿者 るきお  (社会人) 投稿日時 2009/1/5 22:18:14
こんにちは
この記事のことですね?
http://homepage1.nifty.com/rucio/main/dotnet/shokyu/standard23.htm

右上の×ボタンでValidatingイベントが発生する件についてはこの記事中でも説明しているとおりです。
その解決策も鍵さんが提示されているとおりです。

ところで、Validatingイベントは使いにくいので私は使わないで入力チェックは独自に(フレームワーク風に)実装することが多いです。

VBやC#で、Validatingイベントを便利に活用していますという人はいるんでしょうか?
少数の特定のシーンで活用しているということならありそうですが、大々的に活用となるといないのではないでしょうか?

VB2005のベータ版のときに有志の方がこの件をMSにフィードバックしたのですが「仕様です」で終わってしまった記憶があります。
投稿者   (社会人) 投稿日時 2009/1/5 21:48:12
こんにちは。

講座に書かれているコードでは、
ActiveControlのCausesValidationプロパティがFalseの
ときは入力チェックを行わないようになっていますが、
Form右上の×ボタンを押したときや、Alt+F4を押したときの
ActiveControlはTextBox1のままなので入力チェックを行ってしまうようです。

とりあえずの対策としてチェックの条件を増やしてみました。
見た目はスッキリしませんが、とりあえずこれで閉じられると思います。
If ActiveControl.CausesValidation = False OrElse ActiveControl Is TextBox1 Then
    Exit Sub
End If
投稿者 neptune  (社会人) 投稿日時 2009/1/5 21:36:49
こんにちは

>初級講座「5.勝手に発生するValidatingイベント」 
第何回の講座ですか?できればURLを張っておいた方が他の識者にも親切かと思いますよ。
http://homepage1.nifty.com/rucio/main/dotnet/shokyu/standard23.htm

一応これまでに書いているソースもUPすると殆ど一発で解答が付くかもしれません。
よく読んではないのですが、講座の始めから最後まで精読すると解決するんじゃないですかね??
ちょうど今回質問されている内容が書かれているようですから。勿論対応策もです。
投稿者 K.K  (社会人) 投稿日時 2009/1/5 20:11:02
初級講座「5.勝手に発生するValidatingイベント」にて、日付以外がTextBox1に入っていても、Button1クリックで終了できます。
しかし、Fromの右上XクリックやALT+F4で終了しようとしても、日付の入力を促すメッセージボックスが出て、終了できません。
どのような工夫をすれば、XやALT+F4で終了できるようになるのかヒントを頂ければ幸いに存じます。