1

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

我正在尝试使用 Regex 验证文本框,如果它不符合 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”的成员。

4

1 回答 1

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 控件,您将始终面临有人将剪贴板文本粘贴到控件中的危险,这可能会绕过关键事件。

于 2012-05-11T21:36:27.413 回答