【发布时间】:2021-08-23 18:24:24
【问题描述】:
我正在使用 Windows 窗体和错误提供程序来验证我的文本框,验证按预期工作,但即使输入与验证匹配,错误提供程序也不会自行清除。
这里有一些关于这个问题的截图。
这是我的代码,请告诉我如何修复它。
private void usernamet_Validating(object sender, CancelEventArgs e)
{
int username = usernamet.Text.Length;
ErrorProvider errorProvider = new ErrorProvider();
if (string.IsNullOrEmpty(usernamet.Text))
{
e.Cancel = true;
usernamet.Focus();
errorProvider.SetError(usernamet, "Username cannot be empty");
}
else if (username < 5 || username >= 20 )
{
e.Cancel = true;
usernamet.Focus();
errorProvider.SetError(usernamet, "Username must have more than 5 characters and less than 20 characters.");
}
else if (!Regex.IsMatch(usernamet.Text, @"^[a-zA-Z0-9@.]*$"))
{
e.Cancel = true;
usernamet.Focus();
errorProvider.SetError(usernamet, "Username cannot contain special characters.");
}
else
{
e.Cancel = false;
errorProvider.Clear();
errorProvider.SetError(usernamet, null);
}
}
【问题讨论】:
-
不要这样做:
ErrorProvider errorProvider = new ErrorProvider();。在设计器中,从 ToolBox 中删除一个 ErrorProvider 实例并在您的代码中使用它。在Validating事件中,使用.SetError方法设置或清除该控件的错误。
标签: c# windows winforms validation errorprovider