我有这段代码在发布记录之前做一些基本的健全性检查:
if (string.IsNullOrWhiteSpace(textBoxFirstName.Text))
{
errorProvider.SetError(textBoxFirstName, "Enter a first name");
}
if (string.IsNullOrWhiteSpace(textBoxLastName.Text))
{
errorProvider.SetError(textBoxLastName, "Enter a last name");
}
...但是如果满足其中任何一个条件,我想做这样的事情来退出处理程序:
if (errorProvider.SetErrorCount > 0) then return;
......但我认为没办法做到这一点。我不想写一个" OR"声明查看我检查的任何一个文本框是否为空,然后以这种方式短路处理程序。
有没有办法判断errorProvider是否是"脏"避免杂乱的代码?
答案 0 :(得分:2)
编写方法并将错误消息和控件传递给它。有一个计数器变量并增加方法中的计数器。这是一些伪代码:
private int errorCount;
SetError(Control c, string message)
{
errorProvider.SetError(c, message);
errorCount++;
}
答案 1 :(得分:1)
一种选择是使用ErrorProvider的GetError方法。
// possibly use a backing field for all controls to evaluate
private readonly Control[] textBoxes = new[] { textBoxFirstName, textBoxLastName };
// helper property to evaluate the controls
private bool HasErrors
{
get { return textBoxes.Any(x => !string.IsNullOrEmpty(errorProvider.GetError(x)); }
}