2011-04-06 90 views
0

給定一個texbox,我該如何完全忽略非數字字符?所以如果我按「A」或「Z」,這些字符將永遠不會出現在文本框中。我想運行一些代碼,如果用戶試圖輸入數字,如果他試圖輸入非數字太..只接受文本框中的數字

+2

你怎麼樣看這個問題的下'的鏈接權Related'?前兩種看起來很有希望 – RichardTheKiwi 2011-04-06 23:39:32

回答

5

試試這個

Private Sub textBox1_KeyPress(sender As Object, e As KeyPressEventArgs) Handles textBox1.KeyPress 
    If Char.IsDigit(e.KeyChar) Then 
     e.Handled = False 
    Else 
     e.Handled = True 
    End If 

End Sub 

如果e.Handled設置爲true非 - 數字不會輸入到文本框中;否則事件消息像通常那樣流動。

編輯:

爲了處理退格鍵和刪除是多一點的工作,但你可以試試這個

Private Sub textBox1_KeyPress(sender As Object, e As KeyPressEventArgs) Handles textBox1.KeyPress 
    If Char.IsDigit(e.KeyChar) OrElse e.KeyChar = CChar(Keys.Delete) OrElse e.KeyChar = CChar(Keys.Back) Then 
     e.Handled = False 
    Else 
     e.Handled = True 
    End If 

End Sub 

Protected Overrides Function ProcessCmdKey(ByRef msg As Message, keyData As Keys) As Boolean 
    If keyData = Keys.Delete OrElse keyData = Keys.Back Then 
     OnKeyPress(New KeyPressEventArgs(CChar(keyData)) 
    End If 

    Return MyBase.ProcessCmdKey(msg, keyData) 
End Function 

KeyPress事件不會被解僱了刪除鍵和Backspace鍵,因此ProcessCmdKey到覆蓋手動調用形式的的OnKeyPress()

+0

如果我想使用退格刪除一些數字,該怎麼辦?非常感謝,目前工作就像一個魅力。 – Voldemort 2011-04-06 23:47:07

+0

謝謝,工作很棒! – Voldemort 2011-04-07 03:00:53

0

您可以運行在事件的OnKeyPress測試(或任何事件名稱是的WinForms)

0

一種方法是使用一個「MaskedTextBox中」控制,並設置其方便的「面具」屬性

+0

或使用NumericUpDown控件 – Glen 2018-01-03 04:18:56

0

下面的代碼工作:

Private Sub txtSalary_KeyPress(ByVal sender As System.Object, ByVal e As System.Windows.Forms.KeyPressEventArgs) Handles txtSalary.KeyPress 
    If (e.KeyChar < Chr(48) Or e.KeyChar > Chr(57)) And e.KeyChar <> Chr(8) Then 
     e.Handled = True 
    End If 
End Sub 
相關問題