1

在发布记录之前,我有这段代码可以进行一些基本的完整性检查:

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;

...但我认为没有办法做到这一点。我不想写一个“或”语句来查看我正在检查的任何一个文本框是否为空,然后以这种方式短路处理程序。

有没有办法判断 errorProvider 是否“脏”以避免代码混乱?

4

2 回答 2

2

编写一个方法并将错误消息和控件传递给它。有一个计数器变量并在方法内增加计数器。这是一些伪代码:

private int errorCount;
SetError(Control c, string message)
{
    errorProvider.SetError(c, message);
    errorCount++;

}
于 2016-02-13T02:04:06.107 回答
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)); }
}
于 2016-02-13T02:20:26.577 回答