2011-04-06 91 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