2012-05-11 54 views
1

有一种方法可以在一个keyup事件中使用e.Cancel()?取消KeyUP事件的处理程序? VB.NET

我想验证一个正则表达式的文本框,我需要取消的事件,如果它不符合正则表达式的表达,或按下删除,以满足所以关键是表达

例如:

Dim rex As Regex = New Regex("^[0-9]{0,9}(\.[0-9]{0,2})?$") 
Private Sub prices_KeyUp(ByVal sender As Object, ByVal e As System.Windows.Forms.KeyEventArgs) Handles Textbox1.KeyUp, 

     Dim TxtB As TextBox = CType(sender, TextBox) 

     If (rex.IsMatch(TxtB.Text) = False) Then 
      e.cancel = true 
     End If 

    End Sub 

错误:“取消”不是“System.Windows.Forms.KeyEventArgs”的成员。

回答

3

尝试

If (rex.IsMatch(TxtB.Text) = False) Then 
    e.SuppressKeyPress = True 
End If 

MSDN

You can assign true to this property in an event handler such as KeyDown in order to prevent user input.

Setting SuppressKeyPress to true also sets Handled to true.

目前还不清楚你想取消,虽然,因为你正在阅读的TextBox.Text价值是什么。 KeyDown通常是拦截击键的首选事件。

如果您尝试验证整个字符串,则Validating事件可能更合适。使用TextBox控件时,您总会有人将剪贴板文本粘贴到控件中,这可能会绕过关键事件。

+0

你的答案解决了我的问题,非常感谢你 –