我有多个控件元素(TextBox
)与它们对应的ErrorProvider
s相连。
我试图找到一种方法来countAllErrors(),或者更好的是,handleEachError(),
所以我想到了这个:
在课堂上:
internal TextBox email_textbox;
internal TextBox city_textbox;
internal TextBox address_textbox;
internal TextBox phone_textbox;
internal TextBox lastName_textbox;
internal TextBox firstName_textbox;
private ErrorProvider firstName_errPro;
private ErrorProvider lastName_errPro;
private ErrorProvider phone_errPro;
private ErrorProvider address_errPro;
private ErrorProvider city_errPro;
private ErrorProvider email_errPro;
internal Dictionary<ErrorProvider, Control> errors;
在表单的构造函数中:
errors = new Dictionary<ErrorProvider, Control>(6);
errors.Add( firstName_errPro ,firstName_textbox );
errors.Add( lastName_errPro ,lastName_textbox );
errors.Add( phone_errPro ,phone_textbox );
errors.Add( address_errPro ,address_textbox );
errors.Add( city_errPro ,city_textbox );
errors.Add( email_errPro ,email_textbox );
统计所有错误:
int countAllErrors()
{
int numOfErrors = errors.Count<KeyValuePair<ErrorProvider, Control>>(ep => ep.Key.GetError(ep.Value) != "");
return numOfErrors;
}
处理每个错误:
void handleEachError()
{
foreach (KeyValuePair<ErrorProvider, Control> errPair in errors.Where(ep => ep.Key.GetError(ep.Value) != ""))
{
ErrorProvider errorProvider = errPair.Key;
Control control = errPair.Value;
string errorStr = errorProvider.GetError(control);
MessageBox.Show(errorStr);
}
}
如果有帮助的话,请告诉我.. ;)
count++
部分只有在发生更改时才应该递增。即应该放在一个if (ep.GetError(c) == "")
中。 - BradDictionary<Control, int>
来存储所有控件的错误计数,这样可以轻松检查是否仍有任何控件显示错误。 - royalTS