使用C#使用正则表达式验证TextBox并更改Texbox背面颜色

时间:2015-08-27 12:55:05

标签: c# .net regex textbox

我使用winForms使用regex验证名字。我的表单中有textboxbutton。单击button时,程序会检查用户是否键入了有效的名字。如果用户键入了无效的名字,textbox将更改其颜色。我有一种方法,如果用户键入有效的名字,文本框将更改为其原始颜色'白色'

例如:

有效名字:Z

无效的名字:1

我遇到的问题是我的程序无法立即识别验证。 (如果我输入字母Z,文本框仍然是红色。)直到我按下另一个键,如#34;空格键","退格",信" H"或其他任何我的程序,以实现字母Z是有效的名字。

这里发生了什么?在下面的图片中,Z应该是有效的,但就像我之前所说的,我必须输入另一个密钥,以便我的程序识别出名字有效。

//checks if Regex code is wrong if so change the textbox color
    public void Error_Checker()
    {
        if (First_Name_Regex.FNameRegx.IsMatch(textBox1.Text) == false)//First Name Validation
        {
            textBox1.BackColor = Color.Red;
        } 
    }
    //if the RegexCode is comes out true change color
    private void textbox_White(object sender, KeyPressEventArgs e)
    {
        if (First_Name_Regex.FNameRegx.IsMatch(textBox1.Text))//First Name Validation
        {
            textBox1.BackColor = Color.White;

        }
    }
    //textBox1 first name Regex validator
    public static class First_Name_Regex 
    {
        public static readonly Regex FNameRegx = new Regex("^[a-zA-Z]+$");
    }

    private void button1_Click(object sender, EventArgs e)
    {
        Error_Checker();
    }

enter image description here

1 个答案:

答案 0 :(得分:3)

应该是这样的:

if ( (new Regex(@"^[A-Za-z]+$")).IsMatch(textBox1.Text) )
{
    textBox1.ForeColor = Color.Black;
}
else
{
    textBox1.ForeColor = Color.Red;
}

它应该在TextChanged事件