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

有一种方法来使用e.Cancel()在一个keyup事件?

我试图validation一个正则expression式的文本框,我需要取消事件,如果它不符合正则expression式,或删除按下键来满足,使expression式

例如:

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

尝试

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

来自MSDN :

您可以在事件处理程序(如KeyDown)中将此属性分配给此属性,以防止用户输入。

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

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

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