ErrorProvider.Clear()的问题

Joh*_*ohn 5 c# winforms

我有一个问题.我验证了两个texbox.如果texbox未验证,则显示错误提供程序的错误消息.

情况:

tbAzetId.Text = "字符串"; tbHeslo.Text =空;

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";
    }
Run Code Online (Sandbox Code Playgroud)

Mic*_*tta 12

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

errorProvider.SetError(tbAzetId, "");
if (!IsAzetIdValid())
    errorProvider.SetError(tbAzetId, @"Nezadali ste Azet ID");

errorProvider.SetError(tbHelso, "");
if (!IsHesloValid())
    errorProvider.SetError(tbHeslo, @"Nezadali ste heslo");;
Run Code Online (Sandbox Code Playgroud)

ErrorProvider.Clear是不够的:

要清除错误消息,请调用SetError方法并传入Empty作为String值.

  • @John:确实有效。如果您遇到问题,则需要更具体。您可能只想尝试在单独的测试功能或应用中清除和设置错误,以尝试找出问题所在。 (2认同)
  • 要在@MichaelPetrotta的答案中补充说,使用空字符串的SetError()是解决方案(也对我有用),Clear()实际上清除错误提供程序的设置,并且不是该线程中几个人建议的正确方法。例如,如果您设置了图标以显示在MiddleLeft上,则调用Clear()会将ErrorIconAlignment重置为MiddleRight。如果只想删除该错误消息,则不太理想! (2认同)

Ric*_*ein 5

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