0

Windowsフォームには、いくつかのコントロールとUserControlがあります。UserControlにErrorProviderがあります。userControlにエラーがある場合、フォーム内のすべてのコントロールの編集を停止したいと思います。それを行う方法はありますか?

errorProvider.BindToCustomDataAndErrors(..)を使用しています

4

2 に答える 2

1

Validatingイベントを使用して、ユーザーがユーザーコントロールからフォーカスを移動できないようにすることができます。例えば:

    protected override void OnValidating(CancelEventArgs e) {
        foreach (Control ctl in this.Controls) {
            if (errorProvider1.GetError(ctl) != "") e.Cancel = true;
        }
        base.OnValidating(e);
    }

このようにErrorProvider.GetError()を使用することは、機能する可能性はありますが、理想的ではありません。検証エラーの独自のリストを保持することをお勧めします。

于 2012-02-01T12:34:21.303 に答える
1
  1. ユーザー コントロールのプロパティを公開して、エラーがあるかどうかを示します (コントロール コレクションを反復してチェックするなど)。errorProvider.GetError(control)

  2. プロパティを確認し、必要なものをすべて無効にします

    if (!myUserControl.IsValid) { someContainerControl.Enabled = false; }

  3. 「リアルタイム」で通知する必要がある場合は、ユーザー コントロール IsValidChanged でイベントを宣言し、それにアタッチして、それが起動し、IsValid が false のときにコントロールを無効にします。

于 2012-02-01T21:56:01.903 に答える