- - PR -
ValidatingイベントとボタンのCausesValidationについて
1
投稿者 | 投稿内容 | ||||||||
---|---|---|---|---|---|---|---|---|---|
|
投稿日時: 2005-06-13 18:23
VB.NETで開発しています。
@TextBoxAのValidatingイベント内で入力チェック ATextBoxBのValidatingイベント内で入力チェック BButtonA(CausesValidation=False) TextBoxAにフォーカスがある状態で、ボタンのクリックを行うと TextBoxAのValidatingイベントは発生しないのですが、 このボタンの次にTextBoxBにフォーカスが移動した場合に TextBoxAのValidatingイベントが発生してしまいます。 どうしてこのような現象になるのか、 原因がまったく想像できません。 同じような現象を体験されている方や、この現象の原因がお分かりになる方が いらっしゃいましたら、教えていただけませんでしょうか? よろしくお願いします。 | ||||||||
|
投稿日時: 2005-06-13 18:40
え? 仕様だと思いますよ。 CausesValidation が false であるコントロールをいくつ渡り歩いても、 CausesValidation が true のコントロールにフォーカスが移った時点で、 渡り歩く前のコントロールの Validating イベントが発生するのは。 _________________ C# と VB.NET の入門サイト じゃんぬねっと日誌 | ||||||||
|
投稿日時: 2005-06-13 18:56
じゃんぬねっとさん、ありがとうございます。
仕様だったのですか。 恥ずかしいことに、まったく知りませんでした。 申し訳ありません。 いったんCausesValidation=Falseのコントロールにフォーカスが移った後は、 次にどのコントロールに移っても、最初のValidatingイベントは発生して ほしくないのですが、 どのように制御するものなのでしょうか? 教えていただければありがたいと思います。 よろしくお願いします。 | ||||||||
|
投稿日時: 2005-06-13 20:25
自分も昔 VB で勘違いしてたなあ(恥ずかしい)。CausesValidation = false って自コンポーネントでの検査イベント発生を抑制すると思いがちだけど、他コンポーネントで検査イベントを発生させずに、自コンポーネントにフォーカス移動可能にする機能なんだよね。
とりあえず、ButtonA の CausesValidation を true にしておいて、ButtonA がフォーカスを得たら CausesValidation = false にして、ButtonA がフォーカスを失ったら、また CausesValidation = true にするってんじゃ駄目だろうか。 [ メッセージ編集済み 編集者: 未記入 編集日時 2005-06-13 20:27 ] | ||||||||
|
投稿日時: 2005-06-13 20:26
こんにちは、じゃんぬ です。
CausesValidation は全部 true にしておいて、 If Not Me.ActiveControl Is 検証イベントが起こって欲しくないコントロール Then '/ 検証イベント End If とかにすれば、逃がしてはやれます。 または、CausesValidation が false なコントロールに移った時点で、 フラグを設けるしかないのかな... _________________ C# と VB.NET の入門サイト じゃんぬねっと日誌 | ||||||||
|
投稿日時: 2005-06-14 10:29
未記入さん、じゃんぬねっとさん、返答ありがとうございます。
今回は、Validatingイベントの中で ActiveControlを判定する方法でやってみようと思います。 大変参考になりました。 ありがとうございました。 |
1