首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >ErrorProvider.Clear()的问题

ErrorProvider.Clear()的问题
EN

Stack Overflow用户
提问于 2010-10-05 04:32:22
回答 8查看 21.9K关注 0票数 5

我有一个问题。我验证了两个文本框。如果文本框未通过验证,我将使用错误提供程序显示错误消息。

情况:

tbAzetId.Text="string";tbHeslo.Text=empty;

errorprovider在tbHeslo中显示错误消息,这是正常的。

然后,我用tbHeslo编写了一些文本,单击按钮,但errorprovider仍然在tbHeslo中显示错误消息。哪里会有问题呢?

代码如下:

代码语言:javascript
复制
    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";
    }
EN

回答 8

Stack Overflow用户

发布于 2010-10-05 04:36:22

清除错误时,您需要清除该特定控件的错误提供程序文本:

代码语言:javascript
复制
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方法并传入字符串值为空。

票数 14
EN

Stack Overflow用户

发布于 2010-10-05 04:37:33

使用errorProvider.SetError(ctlName,"")从控件中清除错误消息。

票数 5
EN

Stack Overflow用户

发布于 2013-01-04 04:42:30

根据我的经验,这两个

errorProvider.SetError(<ctrlName>, "");

errorProvider.Clear();

将从表单中删除该图标。注意您正在清除的ErrorProvider实例。下面的例子是可行的。但是,如果在验证事件内移动ErrorProvider声明,它将编译并创建错误,但不会清除它。

代码语言:javascript
复制
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.");
    }
}
票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/3858888

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档