我正在尝试设置一个表单来接受电话号码,但我不确定如何验证它,因此只需要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)
答案 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个字符定义文本框的最大长度