1

カスタム Winforms テキスト ボックスで OnValidating イベントをオーバーライドしています。テキスト ボックス (オブジェクトにバインドされている) にフォーカスがあり、マウスを使用してグリッド フォーカスを与えると、OnValidating イベントが常に発生するとは限らないことがわかりました。最初にグリッド フォーカスを与えると、正常に起動されます。しかし、グリッドのセルの 1 つを編集状態 (カーソルの点滅) にすると、それ以降、マウスを使用してテキスト ボックスとグリッドの間を戻ったときに起動しないようです。タブキーを使用してフォーカスを変更すると、常に検証が開始されます。マウスを使用してグリッド以外のコントロールにフォーカスを当てると、常に検証が開始されます。

この機能を単純な形でゼロから再作成しようとしましたが、問題を再現できません。問題が発生しているセットアップで使用しているグリッドは、カスタム列タイプのカスタム DataGridView です。グリッドが問題なのだろうかと思っています。しかし、それがテキスト ボックスのイベントにどのように影響するかはわかりません。何か案は?

4

1 に答える 1

0

CausesValidation物件の関係でしょうね。

CausesValidationfalseに設定されたコントロールにフォーカスがある場合、コントロールの検証は抑制されます。それはただの推測ですが、グリッド内のいくつかのコントロールが持っていると思いますCausesValidation = false;

このプロパティは「キャンセル」ボタンなどを対象としていますが、多くの混乱を招く可能性があります。

于 2011-10-14T18:04:58.397 に答える