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

わんくま同盟

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

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

■87876 / 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イベントでのキャンセルをする仕様を見直す方が無難だと思います。
編集キー/

前の記事(元になった記事) 次の記事(この記事の返信)
←Validating後にCheckBoxが変更できなくなる /ka2 →Re[2]: Validating後にCheckBoxが変更できなくなる /ka2
 
上記関連ツリー

Validating後にCheckBoxが変更できなくなる / ka2 (18/07/09(Mon) 17:57) #87873
Validating後にCheckBoxが変更できなくなる / にゃるら (18/07/09(Mon) 21:19) #87876 ←Now
  └ Re[2]: Validating後にCheckBoxが変更できなくなる / ka2 (18/07/10(Tue) 18:15) #87879

上記ツリーを一括表示 / 上記ツリーをトピック表示
 
上記の記事へ返信