1

キーアップイベントでe.Cancel()を使用する方法はありますか?

正規表現を使用してテキストボックスを検証しようとしていますが、正規表現に一致しない場合はイベントをキャンセルするか、式が一致するように押されたキーを削除する必要があります

例えば:

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 に答える