有一种方法来使用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控件时,您总是会有人将剪贴板文本粘贴到控件中,从而绕过关键事件。