C# と VB.NET の質問掲示板

わんくま同盟

ASP.NET、C++/CLI、Java 何でもどうぞ

C# と VB.NET の入門サイト


■87876 / )  Re[1]: Validating後にCheckBoxが変更できなくなる
□投稿者/ にゃるら (31回)-(2018/07/09(Mon) 21:19:09)
おそらくですけど。

CheckBoxの親ウィンドウになるTabControlのValidationCancelがTrueのままであるためMouseUp時にOnClickが呼ばれません。
OnClickの中でチェック状態を変更する処理が行われますので、チェック状態は変更されません。

原因は、Validationが走ったときのコントロールが誰であるのかがカギだと思われます。
Shift+Tabで移動したときのコントロールは「TabControl」です。
Validationが走ったときに、ValidatingがCancelしたことでTabControlがValidationCancel=Trueになります。
しかし、TextBoxを空文字列にした後、Tabで移動したときのコントロールは「CheckBox」です。
このため、ValidatingがCancelしなかったことの関係者であるTabControlには成功したことが通知されないため、
ValidationCancelがFalseにならない状態になっていると思われます。

これを思った理由は、tabcontrolのstateフィールド(VisualStudioのデバッグでクイックウォッチだと見れます)が
0x20000 (ValidationCancel)が立ちっぱなしだからです。
一方でcheckboxは立っていません。

Bugなのかもしれませんが、Validatingイベントでキャンセルすることは基本的にはWinFormの場合リスクがあります。
Validatingイベントでのキャンセルをする仕様を見直す方が無難だと思います。
返信 編集キー/


管理者用

- Child Tree -