我有一个问题。我验证了两个文本框。如果文本框未通过验证,我将使用错误提供程序显示错误消息。
情况:
tbAzetId.Text="string";tbHeslo.Text=empty;
errorprovider在tbHeslo中显示错误消息,这是正常的。
然后,我用tbHeslo编写了一些文本,单击按钮,但errorprovider仍然在tbHeslo中显示错误消息。哪里会有问题呢?
代码如下:
private bool IsAzetIdValid()
{
if (tbAzetId.Text!=String.Empty && Regex.IsMatch(tbAzetId.Text, "[^a-zA-Z0-9]"))
{
return true;
}
else
{
return false;
}
}
private bool IsHesloValid()
{
if (tbHeslo.Text !=String.Empty)
{
return true;
}
else
{
return false;
}
}
private void btnPrihlasenie_Click(object sender, EventArgs e)
{
errorProvider.Clear();
if (!IsAzetIdValid())
errorProvider.SetError(tbAzetId, @"Nezadali ste Azet ID");
else if (!IsHesloValid())
errorProvider.SetError(tbHeslo, @"Nezadali ste heslo");
else
Text = "OK";
}发布于 2010-10-05 04:36:22
清除错误时,您需要清除该特定控件的错误提供程序文本:
errorProvider.SetError(tbAzetId, "");
if (!IsAzetIdValid())
errorProvider.SetError(tbAzetId, @"Nezadali ste Azet ID");
errorProvider.SetError(tbHelso, "");
if (!IsHesloValid())
errorProvider.SetError(tbHeslo, @"Nezadali ste heslo");;仅有ErrorProvider.Clear是不够的:
若要清除错误消息,请调用SetError方法并传入字符串值为空。
发布于 2010-10-05 04:37:33
使用errorProvider.SetError(ctlName,"")从控件中清除错误消息。
发布于 2013-01-04 04:42:30
根据我的经验,这两个
errorProvider.SetError(<ctrlName>, "");
和
errorProvider.Clear();
将从表单中删除该图标。注意您正在清除的ErrorProvider实例。下面的例子是可行的。但是,如果在验证事件内移动ErrorProvider声明,它将编译并创建错误,但不会清除它。
ErrorProvider ep = new ErrorProvider();
private void txtBox_Validating(object sender, CancelEventArgs e)
{
bool bValidated = double.TryParse(txtBox.Text, out txtBoxVar);
if (bValidated)
{
ep.SetError(txtBox, String.Empty);
ep.Clear();
}
else
{
ep.SetError(txtBox, "Enter a valid decimal.");
}
}https://stackoverflow.com/questions/3858888
复制相似问题