【问题标题】:phone number validation issue电话号码验证问题
【发布时间】: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


【解决方案1】:

免责声明:我已经有一段时间没有接触过 vb.net 了,大概一年吧。我只是提供一个我以前使用过的解决方案,发现它很有帮助。

您可以参考:This question has a similar issue and has been answered.

关于 10 个字符的限制,您可以通过图形编辑器或代码设置文本框的 MaxLength 属性。

您可以参考:How to set the textbox MaxLength property.(请在页面顶部将语言更改为VB。)

【讨论】:

  • 天啊!我怎么能忘记这个。最简单的方法来做到这一点。有时,我们都会陷入愚蠢的问题。这也适用于我。谢谢@Raymond
  • 不是问题,请记住将问题标记为已解决。此外,如果您愿意,可以对提供的链接中的答案进行投票。谢谢
【解决方案2】:

我实际上找到了我自己的问题的解决方案,我把它放在这里,所以如果有人卡住验证文本框有同样的问题可能会得到帮助。

如果用户按下BackSpace,我已将e.handled 设置为false。它奏效了……

   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 tbphone.Text.Length >= 10 Then e.Handled = True
       If e.KeyChar = ChrW(Keys.Back) Then e.Handled = False
   End Sub

【讨论】:

    【解决方案3】:

    我知道它已经解决了,但如果我可以添加一个答案。

        If (e.KeyChar <= ChrW(47)) Or (e.KeyChar >= ChrW(58)) Then
            If e.KeyChar = vbBack Then
            Else
                e.KeyChar = ChrW(0)
            End If
        Else
        End If
    

    我在按键事件中使用此代码

    【讨论】:

    • 我的代码中已经有了这个,你可以检查一下。我的问题是长度。如果我们将其限制为 10 位数字,它甚至不允许我按退格键。不过好歹现在已经解决了。谢谢你的回复
    猜你喜欢
    • 2011-09-21
    • 1970-01-01
    • 1970-01-01
    • 2012-10-27
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多