簡體   English   中英

在KeyUP事件上取消處理程序? VB.NET

[英]Cancel Handler on a KeyUP Event? VB.NET

有沒有辦法在keyup事件上使用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

錯誤: 'cancel'不是'System.Windows.Forms.KeyEventArgs'的成員。

嘗試

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

來自MSDN

您可以在事件處理程序(如KeyDown)中為此屬性指定true,以防止用戶輸入。

將SuppressKeyPress設置為true也將Handled設置為true。

目前還不清楚你要取消的是什么,因為你正在閱讀TextBox.Text值。 KeyDown通常是攔截擊鍵的首選事件。

如果您嘗試驗證整個字符串,則Validating事件可能更合適。 使用TextBox控件,您總是會有人將剪貼板文本粘貼到控件中的危險,這可能會繞過關鍵事件。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM