在vb.net中验证文本框时,我通常使用.Chr或.ChrW函数来定义可输入的ASCII值的有效范围。今天我遇到了以前我不必做的事情,我必须以e.KeyChar <> Chr(156)
格式使用此函数,但将值156替换为GBP符号的值,或者£
然而,在通过ASCII表在线查找ASCII值为156之后,我运行了代码,它不会让我输入£。有什么办法解决这个问题?有什么我想念的吗?
Private Sub txtFVal_KeyPress(sender As Object, e As KeyPressEventArgs) Handles txtFVal.KeyPress
If e.KeyChar <> Chr(156) AndAlso e.KeyChar <> Chr(46) AndAlso e.KeyChar <> Chr(44) AndAlso e.KeyChar = ChrW(Keys.Oemcomma) _
AndAlso (e.KeyChar < Chr(48) OrElse e.KeyChar > Chr(57)) AndAlso e.KeyChar <> Chr(8) Then
e.Handled = True
End If
End Sub
答案 0 :(得分:0)
不必查询其ASCII号,只需通过用c
后缀字符串来指定char本身 - 在VB.NET中表示您已指定了char字面值:
If e.KeyChar <> "£"c AndAlso ...
修改强>
这是一个更干净的If
语句,看看它是否有效:
If Char.IsNumber(e.KeyChar) = False AndAlso e.KeyChar <> "£"c _
AndAlso e.KeyChar <> ","c AndAlso e.KeyChar <> "."c _
AndAlso e.KeyChar <> Chr(8) Then
e.Handled = True
End If