此代码位于Keypress事件
下当我尝试输入-1,-2或1.1 -1.3时没有问题,但是当我尝试在文本框中输入1/2和1/4时,我只存储了这个“1 /”。 我认为我的代码有问题,但根本没有错误信息,我无法弄清楚。 。 任何形式的帮助和建议都非常感谢。 。
Dim tb As TextBox = CType(sender, TextBox)
Dim chr As Char = e.KeyChar
If IsNumeric(e.KeyChar) And Not e.KeyChar = "-" Then
e.Handled = Not IsNumeric(tb.Text & e.KeyChar)
ElseIf IsNumeric(e.KeyChar) And Not e.KeyChar = "/" Then
e.Handled = Not IsNumeric(tb.Text & e.KeyChar)
ElseIf e.KeyChar = "." Then
If Not (tb.SelectedText = "." Or IsNumeric(tb.Text & e.KeyChar)) Then
e.Handled = True
End If
ElseIf e.KeyChar = "/" Then
If tb.SelectionStart <> 1 Or Microsoft.VisualBasic.Left(tb.Text, 1) = "/" Then
e.Handled = True
End If
ElseIf e.KeyChar = "-" Then
If tb.SelectionStart <> 0 Or Microsoft.VisualBasic.Left(tb.Text, 1) = "-" Then
e.Handled = True
End If
ElseIf Not Char.IsControl(e.KeyChar) Then
e.Handled = True
End If
答案 0 :(得分:1)
您遇到第一个条件本身的问题,您检查的是由于“/”符号而返回false的isnumeric。
Dim tb As TextBox = CType(sender, TextBox)
Dim chr As Char = e.KeyChar
If IsNumeric(e.KeyChar) And Not e.KeyChar = "-" Then
If tb.Text.Contains("/") = False Then
e.Handled = Not IsNumeric(tb.Text & e.KeyChar)
End If
ElseIf IsNumeric(e.KeyChar) And Not e.KeyChar = "/" Then
e.Handled = Not IsNumeric(tb.Text & e.KeyChar)
ElseIf e.KeyChar = "." Then
If Not (tb.SelectedText = "." Or IsNumeric(tb.Text & e.KeyChar)) Then
e.Handled = True
End If
ElseIf e.KeyChar = "/" Then
If tb.SelectionStart <> 1 Or Microsoft.VisualBasic.Left(tb.Text, 1) = "/" Then
e.Handled = True
End If
ElseIf e.KeyChar = "-" Then
If tb.SelectionStart <> 0 Or Microsoft.VisualBasic.Left(tb.Text, 1) = "-" Then
e.Handled = True
End If
ElseIf Not Char.IsControl(e.KeyChar) Then
e.Handled = True
End If
答案 1 :(得分:0)
我认为你可以通过测试整个值是否为数字而不是测试每个字符来避免这个错误和很多复杂性。例如:
If IsNumeric(tb.Text) Then
e.Handled = true
End If
有什么理由你不能这样做吗?