하나의 문제가 있습니다. 두 개의 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
- 답변 # 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();
- c# : 다른 스레드를 기다리는 동안 Application.DoEvents
- c# : 양식이 로드되었는지 확인
- c# : 다른 UserControl에서 사용자 컨트롤을 어떻게 변경할 수 있습니까?
- c# : DataGridviewColumnCollection을 ComboBox.DataSource에 성공적으로 바인딩하고 Display/ValueMember를 지정할 수 없는 이유는 무엇입니까?
- c# : DesignerSerializationVisibilityAttribute 없이 사용자 정의 컨트롤의 명명 직렬화
- c# : 다른 응용 프로그램에 포함된 글꼴 사용
- c# : HKEY_LOCAL_MACHINE\SOFTWARE\WOW6432Node를 보려면 관리자 권한으로 Regedit를 엽니다.
- C# WinForms -Designer에서 설정한 레이블 값을 표시하지 않는 폼의 인스턴스
- c# : MessageBox.Show가 맨 위에 표시되도록 합니다.
- c# : Entity Framework 6 및 WinForm DataGrid의 문제
오류가 해결 될 때 해당 특정 컨트롤에 대한 오류 제공자 텍스트를 지워야합니다.
ErrorProvider.Clear가 충분하지 않습니다 :
와이즈 비즈