【发布时间】:2020-01-14 06:26:26
【问题描述】:
我正在尝试validate 电话号码textbox。我只希望用户只能在文本框中输入numeric 值和10 digits。我使用keypress 事件做到了。
它工作正常但是问题是一旦输入的长度达到10,它甚至不会允许backspace。
这是我的代码 -
Private Sub tbphone_KeyPress(ByVal sender As System.Object, ByVal e As System.Windows.Forms.KeyPressEventArgs) Handles tbphone.KeyPress
If Not (Char.IsDigit(CChar(CStr(e.KeyChar))) Or e.KeyChar = ChrW(Keys.Back)) Or tbphone.Text.Length >= 10 Then e.Handled = True
End Sub
现在,可能存在用户正确输入所有数字但最后一个数字的情况。在这种情况下,他将无法删除最后一个数字,也许他将无法在该文本框中执行任何操作,因为输入文本的长度已经是 10,现在 e.handled 设置为 true。
请建议我如何实现它...
【问题讨论】:
-
不是实时验证,而是在用户完成输入后验证输入值。
-
显然您需要更改布尔表达式以不排除该长度的所有键。想一想这样的布尔表达式会是什么样子。没有迹象表明你真的尝试过。
-
谢谢大家的回复。问题已经解决了。我只是将
e.handled = false设置在另一个if clause中。
标签: vb.net validation