是否可以查询 ErrorProvider 是否设置了错误?
Can the ErrorProvider be queried to see if it has set any errors?
我有这段代码可以在发布记录之前进行一些基本的健全性检查:
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 是否 "dirty" 以避免代码混乱?
编写一个方法并将错误消息和控件传递给它。有一个计数器变量并在方法内增加计数器。这是一些伪代码:
private int errorCount;
SetError(Control c, string message)
{
errorProvider.SetError(c, message);
errorCount++;
}
一种选择是使用 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)); }
}
我有这段代码可以在发布记录之前进行一些基本的健全性检查:
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 是否 "dirty" 以避免代码混乱?
编写一个方法并将错误消息和控件传递给它。有一个计数器变量并在方法内增加计数器。这是一些伪代码:
private int errorCount;
SetError(Control c, string message)
{
errorProvider.SetError(c, message);
errorCount++;
}
一种选择是使用 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)); }
}