【问题标题】:How to validate textbox value while user enters and display error message?用户输入并显示错误消息时如何验证文本框值?
【发布时间】:2019-04-15 17:59:34
【问题描述】:

所以,我必须编写一个方法来验证保存名称的字符串是否只包含字母,不包含数字。当用户在提交表单之前通过 textchanged 事件输入并在标签上显示红色错误消息时,应应用文本框值的验证。我的代码有效,但问题是当我在文本框中输入数字时,即使我删除文本框值并输入字母字符串,标签也会显示错误。

我已经声明了一个将错误字符串分配给标签的方法,如果正则表达式与文本框输入不匹配,则在文本更改事件期间调用该方法。

public void Validator()
{
    Calculate_Salary.Enabled = false;
    label4.Text = "Please enter only alphabetical letters";
}

private void _Name_TextChanged(object sender, EventArgs e)
{
    Regex pattern = new Regex("/^[A-Za-z]+$/");
    string name = _Name.Text;
    if (pattern.IsMatch(name))
    {
        Calculate_Salary.Enabled = true;
        label4.Text = "";

    }
    else
    {
        Validator();
    }
}     

【问题讨论】:

  • 您使用的是什么用户界面? WinForms、WPF、UWP 或 ASP.NET MVC?
  • 看起来像给定事件的网络表单。
  • 不要设置Enabled,而是尝试更改颜色
  • 下一步是设置 label4.text = "";之后calculate_salary.enable = true;
  • @Uyur99 尝试将标签值设置为:label4.Text = string.empty; 或者您可以将可见性设置为 false:label4.Visible = false;

标签: c# winforms


【解决方案1】:

在验证之前清除文本框:

public void Validator()
{
    Calculate_Salary.Enabled = false;
    label4.Text = "Please enter only alphabetical letters";
}
private void _Name_TextChanged(object sender, EventArgs e)
{
    label4.Text = "";
    Regex pattern = new Regex("/^[A-Za-z]+$/");
    string name = _Name.Text;
    if (pattern.IsMatch(name))
    {
        Calculate_Salary.Enabled = true;

    }
    else
    {
        Validator();
    }
}

【讨论】:

  • Regex("/^[A-Za-z]+$/") 在文本框为空时匹配,因此仍会显示错误。您需要在文本框为空且Calculate_Salary.Enabled = false 时添加一个选项,但您不会显示错误
【解决方案2】:

您的Regex 比较是错误的试试这个代码:

public void Validator()
{
    Calculate_Salary.Enabled = false;
    label4.Text = "Please enter only alphabetical letters";
}

private void _Name_TextChanged(object sender, EventArgs e)
{
    label4.Text = "";
    string name = _Name.Text;
    if (Regex.IsMatch(name, @"^[a-zA-Z]+$"))
        Calculate_Salary.Enabled = true;
    else
        Validator();
}

【讨论】:

    【解决方案3】:

    我更改了验证码。它现在似乎起作用了。

    private void _Name_TextChanged(object sender, EventArgs e)
    {
        label4.Text = string.Empty;
    
        string name = _Name.Text;
        if (Regex.IsMatch(_Name.Text, "^[a-zA-Z]+$") || _Name.Text=="")
        {
            Calculate_Salary.Enabled = true;
        }
        else
        {
            Calculate_Salary.Enabled = false;
            label4.Text = Validator();
        }
    }
    

    【讨论】:

      猜你喜欢
      • 2021-06-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-11-28
      • 2021-12-09
      • 1970-01-01
      相关资源
      最近更新 更多