
在添加ErrorProvider后,窗口中的的有控件都会增加三个属性如下。

private void email_txtB_TextChanged(object sender, EventArgs e)
{
//创建一个Regex 类
Regex regex;
//限定字符串匹配E_mail地址格式
regex = new Regex(@"\S+@\S+\.\S+");
//获取当前控件
Control ctrl = (Control)sender;
//当前控件的输入信息是否匹配正则表达式
if (regex.IsMatch(ctrl.Text))
{
//当前控件的输入信息是匹配正则表达式则错误信息控件不显示任何信息
this.errorProvider1.SetError(ctrl, "");
}
else
{
//当前控件的输入信息不匹配正则表达式则错误信息控件显示"非法的e-mail地址."
this.errorProvider1.SetError(ctrl, "非法的e-mail地址.");
}
}
private void OK_butt_Click(object sender, EventArgs e)
{
string errorText = "";
//布尔变量invalidInput用来指示窗口中是否有控件发生错误
bool invalidInput = false;
//循环查询窗体中的每个控件
foreach (Control ctrl in this.Controls)
{
//如果errorProvider控件捕获到有控件输入错误
if (this.errorProvider1.GetError(ctrl) != "")
{
//将errorProvider控件提示的错误信息赋给字符串errorText
errorText += " * " + this.errorProvider1.GetError(ctrl) + "\n";
//设布尔变量invalidInput为真
invalidInput = true;
}
}
//当有控件发生错误时
if (invalidInput)
{
//在消息窗口中显示相应错误信息
MessageBox.Show(
"窗体包含以下未解决的错误:\n\n" +
errorText, "无效的输入", MessageBoxButtons.OK,
MessageBoxIcon.Warning);
}
else
{
this.Close();
}
}