0

私はc#を使用しています。

CausesValidation プロパティがコンテナーから子コントロールに伝達されないのはなぜですか?

TabControl があり、すべてのタブでユーザー入力の検証を実行する必要があります。ただし、各タブは独立しています。TableLayoutPanel のようなコンテナーがあり、CausesValidation を false に設定すると、子コンポーネントは引き続き検証を実行することがわかりました。

したがって、このコードは機能しません。

Foreach(Control c in Container.Controls)
{
    c.CausesValidation = False;
}

DEBUG 出力を実行すると、検出された唯一のコントロールが TableLayoutPanel または検出されて False に設定される GroupBox のようなその他のコンテナーであることがわかります。しかし、コンテナはその値を子レベルに伝播していません。多くの人が、どうすれば問題を解決できるか尋ねました。多くのメソッドを見つけましたが、検証を実行する TabControl のどのタブを選択できるようにする静的クラスを作成しました。 10層の深さ。そのライブラリが必要な場合は、それを求めてください!

私の本当の質問は、コンテナーがそのプロパティをその子コントロールに伝達し、その子コントロールを子コントロールに伝達するべきではないということです!

ゼロから機能するはずの何かに非常に特化した非常にクレイジーなコードを作成することから、多くの作業を節約できますか? なぜこれが暗示されていないのですか?

4

1 に答える 1