0

私はWindowsフォームアプリケーションに取り組んでおり、エラープロバイダーを使用していくつかのテキストボックスを検証しようとしていますが、タブ1にあるボタンをクリックすると問題が発生し、別のタブにあるすべてのテキストボックスも検証されます. 他のタブに存在するコントロールではなく、現在のタブに存在するテキストボックスに対して検証が行われるようにします。どうすればこれを達成できますか?助けてください。以下は、クリックイベントの検証に関連するコードです。

   private void btnCreateUser_Click(object sender, EventArgs e)
    {
          if (this.ValidateChildren(ValidationConstraints.Enabled))
        {
               // Some Code here
        }
    }

以下は、1 つのテキスト ボックスの検証および検証済みイベントに使用されるコードです。他のタブにも存在する他のテキストボックスにも同様のコードを使用しています。

      private void txtFirstNm_Validating(object sender, CancelEventArgs e)
    {
        bool cancel = false;
        if (txtFirstNm.Text.Trim().Length == 0)
        {
            cancel = true;
            errorProvider1.SetError(txtFirstNm,"Please enter First Name");
        }
        else
        {
            cancel = false;
            errorProvider1.SetError(txtFirstNm, "");
        }
        e.Cancel = cancel;
    }

    private void txtFirstNm_Validated(object sender, EventArgs e)
    {
        errorProvider1.SetError(txtFirstNm,"");
    }
4

1 に答える 1

0

私の質問で与えられたシナリオは、以下のコードを使用して処理できます。ValidationConstraint を Visible として使用できます。これにより、現在表示されているコントロールで検証が確実に行われます。

  private void btnCreateUser_Click(object sender, EventArgs e)
  {
      if (this.ValidateChildren(ValidationConstraints.Visible))
      {
           // Some Code here
      }
  }
于 2014-12-09T21:29:33.347 に答える