>

하나의 문제가 있습니다. 두 개의 texbox를 확인합니다. texbox가 유효하지 않으면 오류 제공자와 함께 오류 메시지를 표시합니다.

상황 :

tbAzetId.Text = "string"; tbHeslo.Text = 빈;

tbHeslo의 errorprovider 표시 오류 메시지입니다. 괜찮습니다.

그런 다음 tbHeslo에 텍스트를 쓰고 버튼을 클릭했지만 errorprovider는 여전히 tbHeslo에 오류 메시지를 표시합니다. 문제가있는 곳은 어디입니까?

코드는 다음과 같습니다 :

   private bool IsAzetIdValid()
    {
        if (tbAzetId.Text!=String.Empty && Regex.IsMatch(tbAzetId.Text, "[^a-zA-Z0-9]"))
        {
            return true;
        }
        else
        {
            return false;
        }
    }
    private bool IsHesloValid()
    {
        if (tbHeslo.Text !=String.Empty)
        {
            return true;
        }
        else
        {
            return false;
        }
    }
    private void btnPrihlasenie_Click(object sender, EventArgs e)
    {
        errorProvider.Clear();
        if (!IsAzetIdValid())
            errorProvider.SetError(tbAzetId, @"Nezadali ste Azet ID");
        else if (!IsHesloValid())
            errorProvider.SetError(tbHeslo, @"Nezadali ste heslo");
        else
            Text = "OK";
    }

  • 답변 # 1

    오류가 해결 될 때 해당 특정 컨트롤에 대한 오류 제공자 텍스트를 지워야합니다.

    errorProvider.SetError(tbAzetId, "");
    if (!IsAzetIdValid())
        errorProvider.SetError(tbAzetId, @"Nezadali ste Azet ID");
    errorProvider.SetError(tbHelso, "");
    if (!IsHesloValid())
        errorProvider.SetError(tbHeslo, @"Nezadali ste heslo");;
    
    

    ErrorProvider.Clear가 충분하지 않습니다 :

    와이즈 비즈

  • 답변 # 2

    errorProvider.SetError (ctlName, "")를 사용하여 컨트롤에서 오류 메시지를 지우십시오.

  • 답변 # 3

    내 경험으로는

    To clear the error message, call the SetError method and pass in Empty for the String value.

    그리고

    errorProvider.SetError(<ctrlName>, "");

    양식에서 아이콘을 제거합니다. 무슨 errorProvider.Clear(); 에주의  인스턴스를 지우고 있습니다. 아래 예제가 작동합니다. 그러나 ErrorProvider 를 이동하면  Validating Event 내부에 선언하면 컴파일되고 오류가 발생하지만 지워지지는 않습니다.

    ErrorProvider
    
    

  • 답변 # 4

    ErrorProvider ep = new ErrorProvider(); private void txtBox_Validating(object sender, CancelEventArgs e) { bool bValidated = double.TryParse(txtBox.Text, out txtBoxVar); if (bValidated) { ep.SetError(txtBox, String.Empty); ep.Clear(); } else { ep.SetError(txtBox, "Enter a valid decimal."); } }  당신이 ErrorProvider.Clear 에있는 모든 설정을 재설정합니다  Alignment, Padding, DataSource 등과 같이 컨트롤에서 컨트롤을 지우려면 (정확하게 확인되면) ErrorProvider 를 사용하십시오 . 코드는 다음과 같습니다.

    SetError(Control, "")
    
    

  • 답변 # 5

    errorProvider.Clear ()를 사용할 필요는 없었지만 변경 한 설정에 따라 다릅니다 (Clear ()는 실제 컨트롤의설정을 재설정 함) 오류가 아닙니다). 설정을 재설정하고 싶지 않았습니다.

    모든 컨트롤을 반복하고 메시지를 비워 두는 것과 같은 아이디어를 보았습니다.

    private void btnPrihlasenie_Click(object sender, EventArgs e)
    {
        if (IsAzetIdValid()) {
            errorProvider.SetError(tbAzetId, "");
        } else {
            errorProvider.SetError(tbAzetId, @"Nezadali ste Azet ID");
        }
    }
    
    

    그러나 실제로 실제로 효과가 있었던 것은

    foreach (Control cr in this.Parent.Controls)
    {
      errorProvider1.SetError(cr, "");
    }
    
    

    errorProvider1.Dispose();

  • 이전 IIS appsettingsjson을 사용하여 닷넷 코어에서 Angular 6 URL 다시 쓰기를 구성하는 방법
  • 다음 qt - GStreamer d3dvideosink 오버레이 다시 페인트 깜박임