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

タグの編集
投稿者 K.K  (社会人) 投稿日時 2009/1/5 20:11:02
初級講座「5.勝手に発生するValidatingイベント」にて、日付以外がTextBox1に入っていても、Button1クリックで終了できます。
しかし、Fromの右上XクリックやALT+F4で終了しようとしても、日付の入力を促すメッセージボックスが出て、終了できません。
どのような工夫をすれば、XやALT+F4で終了できるようになるのかヒントを頂ければ幸いに存じます。
投稿者 neptune  (社会人) 投稿日時 2009/1/5 21:36:49
こんにちは

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

一応これまでに書いているソースもUPすると殆ど一発で解答が付くかもしれません。
よく読んではないのですが、講座の始めから最後まで精読すると解決するんじゃないですかね??
ちょうど今回質問されている内容が書かれているようですから。勿論対応策もです。
投稿者   (社会人) 投稿日時 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
投稿者 るきお  (社会人) 投稿日時 2009/1/5 22:18:14
こんにちは
この記事のことですね?
http://homepage1.nifty.com/rucio/main/dotnet/shokyu/standard23.htm

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

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

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

VB2005のベータ版のときに有志の方がこの件をMSにフィードバックしたのですが「仕様です」で終わってしまった記憶があります。
投稿者 K.K  (社会人) 投稿日時 2009/1/6 23:54:46
早速のレス、ありがとうございます。
不慣れでリンク忘れなど、申しわけありません。
いろいろ解決方法や、Validatingに関する話があるんですね。
大変、勉強になります。ありがとうございます。