Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/262.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 如何在用户输入和显示错误消息时验证文本框值?_C#_Winforms - Fatal编程技术网

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

C# 如何在用户输入和显示错误消息时验证文本框值?,c#,winforms,C#,Winforms,所以,我必须编写一个方法来验证保存名称的字符串是否只包含字母表,而不包含数字。当用户在提交表单之前通过textchanged事件输入文本框值并在标签上显示红色错误消息时,应应用文本框值验证。我的代码可以工作,但问题是,当我在文本框中输入数字时,即使删除文本框值并输入字母字符串,标签仍会显示错误 我声明了一个方法,该方法将错误字符串分配给标签,并且在文本更改事件期间,若正则表达式和文本框输入不匹配,则调用该方法 public void Validator() { Calculate_Sal

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

验证之前,只需清除文本框即可:

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

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

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

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

你用的是什么用户界面?WinForms、WPF、UWP或ASP.NET MVC?看起来像给定事件的web表单。请尝试更改颜色,而不是将
设置为Enabled
,下一步是将label4.text设置为“”;计算后_salary.enable=true@Uyur99尝试将标签值设置为:
label4.Text=string.empty
或者您可以将Visibility设置为false:
label4.Visible=false当文本框为空时,正则表达式(“/^[A-Za-z]+$/”)不匹配,因此它仍将显示en error。您需要添加一个选项,用于在文本框为空时计算_Salary.Enabled=false,但不显示错误