我使用winForms
使用regex
验证名字。我的表单中有textbox
和button
。单击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();
}
答案 0 :(得分:3)
应该是这样的:
if ( (new Regex(@"^[A-Za-z]+$")).IsMatch(textBox1.Text) )
{
textBox1.ForeColor = Color.Black;
}
else
{
textBox1.ForeColor = Color.Red;
}
它应该在TextChanged
事件