用户输入并显示错误消息时如何验证文本框值?

时间:2019-04-15 17:59:35

标签: c# winforms

因此,我必须编写一种方法的代码,该方法可以验证保存名称的字符串是否仅包含字母,而不包含数字。当用户在提交表单之前通过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();
    }
}     

GUI

3 个答案:

答案 0 :(得分: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();
    }
}

答案 1 :(得分:0)

我更改了验证码。现在似乎可以正常工作了。

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();
    }
}

答案 2 :(得分:0)

您的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();
}