仅在Visual Basic中的文本框中输入数值

时间:2013-04-22 18:48:27

标签: vb.net

我正在尝试设置一个表单来接受电话号码,但我不确定如何验证它,因此只需要11位数字值。

到目前为止,我已经努力确保文本框中有某些内容

 'Validate data for Telephone Number
 If txtTelephoneNumber.Text = "" Then
 txtTelephoneNumber.Focus()
 MessageBox.Show("You must enter a Telephone Number.", "Data Entry Error", MessageBoxButtons.OK, MessageBoxIcon.Information)

7 个答案:

答案 0 :(得分:3)

我暗示你使用的是Windows Forms 将其写为TextBox的Key Pressed事件。

Private Sub myTxtBox_KeyPress(ByVal sender As System.Object, ByVal e As System.Windows.Forms.KeyPressEventArgs) Handles myTxtBox.KeyPress
If txtTelephoneNumber.Text.Length > 11 Then
   e.Handled= True
   return
End If
If Asc(e.KeyChar) <> 8 Then
    If Asc(e.KeyChar) < 48 Or Asc(e.KeyChar) > 57 Then
          e.Handled = True
    End If
End If
End Sub

(没有时间对其进行测试)使用户不要输入任何非数字的内容。它应该阻止他输入超过11个数字。

答案 1 :(得分:1)

textbox keydown事件中。使用以下内容:

If Not IsNumeric(Chr(e.KeyCode)) Then
    e.SuppressKeyPress = True
End If

如果您想要允许其他字符,您可以这样做:

If Not IsNumeric(Chr(e.KeyCode)) And Not e.KeyCode = 8 And Not e.KeyCode = 46 Then
    e.SuppressKeyPress = True
End If

'(8 = backspace key and 46 = Delete key)

答案 2 :(得分:0)

你可以尝试

If txtTelephoneNumber.Text = "" Or Not IsNumeric(txtTelephoneNumber.Text) Or txtTelephoneNumber.Text.Length <> 11 Then
    txtTelephoneNumber.Focus()
    MessageBox.Show("You must enter a Telephone Number.", "Data Entry Error",      MessageBoxButtons.OK, MessageBoxIcon.Information)

答案 3 :(得分:0)

将它放在TextBox的KeyPress事件中

    'makes sure that only numbers and the backspace are allowed in the fields.
    Dim allowedChars As String = "0123456789" & vbBack

    'get a reference to the text box that fired this event
    Dim tText As TextBox
    tText = CType(sender, TextBox)

    If allowedChars.IndexOf(e.KeyChar) = -1 Then
        ' Invalid Character
        e.Handled = True
    End If

    if tText.Text.Length >= 11 then
        e.Handled = True
    End If

答案 4 :(得分:0)

我将此用于按键事件

If e.KeyChar < CStr(0) Or e.KeyChar > CStr(9) Then e.Handled = True

实际上,这看起来与我记得使用的不同,但它有效。虽然你也需要允许退格。

或者我想更短的将是

If Not IsNumeric(e.KeyChar) Then e.Handled = True

也是按键事件。

您可以使用MaxLength

设置文本框的最大长度

答案 5 :(得分:0)

将最大长度设置为12将此值放在text1的按键中,它将使用短划线和仅数字格式化

    If Len(Text1.Text) = 3 Or Len(Text1.Text) = 7 Then
        Text1.Text = Text1.Text & "-"
        Text1.SelStart = Len(Text1.Text)
    End If
    If KeyAscii <> 127 And KeyAscii <> 8 And KeyAscii <> 13 Then
        If IsNumeric(Chr(KeyAscii)) = False Then
            KeyAscii = 0
        End If
    ElseIf KeyAscii = 8 Then
        If Right(Text1.Text, 1) = "-" Then
            Text1.Text = Left(Text1.Text, Len(Text1.Text) - 1)
            Text1.SelStart = Len(Text1.Text)
        End If
    End If

如果您只想要数字文本框,请在按键

中使用以下内容
    If KeyAscii <> 127 And KeyAscii <> 8 And KeyAscii <> 13 Then
        If IsNumeric(Chr(KeyAscii)) = False Then
            KeyAscii = 0
        End If
    End If

答案 6 :(得分:0)

您可以使用lostfocus事件,在这种情况下,您可以使用以下内容:

if not isnumeric(textbox1.text) then
   textbox1.gotfocus   'this part is to validate only numbers in the texbox and not let
                        ' him go from the texbox
endif

你应该只用11个字符定义文本框的最大长度