有没有办法在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'的成员。
答案 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控件,您总是会有人将剪贴板文本粘贴到控件中的危险,这可能会绕过关键事件。