为什么Regex没有机会输入数据?

时间:2012-09-05 03:57:09

标签: c# .net regex textbox mask

我有一个事件,它没有任何机会在TextBox中输入数据。当我尝试在Textbox中输入数据时,Textbox不会这样做:

private void Login_textbox_KeyPress(object sender, KeyPressEventArgs e)
{
    if (!System.Text.RegularExpressions.Regex.IsMatch(textbox1.Text, @"^[a-zA-Z]+$"))
        e.Handled = true;
}

我只想在TextBox中输入不是数字或任何符号的数据。

2 个答案:

答案 0 :(得分:3)

尝试使用以下代码

private void textBox1_KeyPress(object sender, KeyPressEventArgs e)
{
     if (!System.Text.RegularExpressions.Regex.IsMatch(e.KeyChar.ToString() , @"^[a-zA-Z]+$")) 
         e.Handled = true;
}

谢谢!

答案 1 :(得分:2)

好像你正在使用c#。

然后您需要遵循以下步骤:

1)将文本框的causeValidation属性设置为true

2)设置原因验证的事件监听器

myTextBox1.Validating +=
  new System.ComponentModel.CancelEventHandler(myTextBox1_Validating);
myTextBox1.Validated += 
  new System.EventHandler(myTextBox1_Validated);

3)实现这些事件的hadler函数

private void myTextBox1_Validating(object sender,System.ComponentModel.CancelEventArgs e)
{        
   if(!CheckIfTextBoxNumeric(myTextBox1))
   {
       myLabel.Text =  "Has to be numeric";
       e.Cancel = true;
   }
}
private void myTextBox1_Validated(object sender,System.EventArgs e)
{
   myLabel.Text = "Validated first control";          
}

如果您想使用maskedTextBox,请参阅http://msdn.microsoft.com/en-us/library/ms234064(v=vs.80).aspx