2012-05-11 89 views
1

有一種方法可以在一個keyup事件中使用e.Cancel()?取消KeyUP事件的處理程序? VB.NET

我想驗證一個正則表達式的文本框,我需要取消的事件,如果它不符合正則表達式的表達,或按下刪除,以滿足所以關鍵是表達

例如:

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」的成員。

回答

3

嘗試

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

MSDN

You can assign true to this property in an event handler such as KeyDown in order to prevent user input.

Setting SuppressKeyPress to true also sets Handled to true.

目前還不清楚你想取消,雖然,因爲你正在閱讀的TextBox.Text價值是什麼。 KeyDown通常是攔截擊鍵的首選事件。

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

+0

你的答案解決了我的問題,非常感謝你 –