是否可以查询ErrorProvider以查看是否设置了任何错误?

时间:2016-02-13 01:09:51

标签: c# winforms dry errorprovider

我有这段代码在发布记录之前做一些基本的健全性检查:

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是否是"脏"避免杂乱的代码?

2 个答案:

答案 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)); }
}