如何只允许文本框vb.net中的数字和点

Chr*_*ph 2 vb.net textbox

我想知道我怎么能让我的文本框只接受数字和点.喜欢:

123.45或115或218.16978

等等..

我已经得到以下代码:

Private Sub TxtHStof_KeyPress(ByVal sender As System.Object, ByVal e As System.Windows.Forms.KeyPressEventArgs) Handles TxtHStof.KeyPress
    e.Handled = Not Char.IsDigit(e.KeyChar)

End Sub
Run Code Online (Sandbox Code Playgroud)

但这只允许没有点的数字.我怎样才能改变代码所以它确实允许点,但没有别的.(复制粘贴无关紧要,因为它不会成为问题)

非常感谢

Hol*_*ndt 8

e.Handled = Not (Char.IsDigit(e.KeyChar) OR e.KeyChar=".")
Run Code Online (Sandbox Code Playgroud)

  • @OsamaGadour:要允许退格字符起作用,您需要将“Or Asc(e.KeyChar) = 8”添加到条件中。8 是退格字符的 ascii 代码。 (3认同)

Sid*_*out 5

公认的解决方案无法满足

  1. 小数的多个输入,例如“ 12 .... 1234”
  2. 操作系统特定的小数点分隔符

这对我有用

Private Sub TextBox1_KeyPress(sender As Object, e As KeyPressEventArgs) Handles TextBox1.KeyPress
    Dim DecimalSeparator As String = Application.CurrentCulture.NumberFormat.NumberDecimalSeparator
    e.Handled = Not (Char.IsDigit(e.KeyChar) Or
                     Asc(e.KeyChar) = 8 Or
                     (e.KeyChar = DecimalSeparator And sender.Text.IndexOf(DecimalSeparator) = -1))
End Sub
Run Code Online (Sandbox Code Playgroud)