在KeyUP事件上取消处理程序? VB.NET

时间:2012-05-11 21:34:21

标签: regex windows vb.net keyup

有没有办法在keyup事件上使用e.Cancel()?

我尝试使用正则表达式验证文本框,如果不符合Regex表达式,我需要取消该事件,或删除按下的键以使表达式

例如:

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'的成员。

1 个答案:

答案 0 :(得分:3)

尝试

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

来自MSDN

  

您可以在事件处理程序(如KeyDown)中为此属性指定true,以防止用户输入。

     

将SuppressKeyPress设置为true也会将Handled设置为true。

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

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