vb中,如何限制输入的文本框的内容只能是数字数或者字母?
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了vb中,如何限制输入的文本框的内容只能是数字数或者字母?相关的知识,希望对你有一定的参考价值。
比如我我限制某一文本框里面输入的内容只能是数(可以是小数),请问如何实现呢?如果限制只能输入整数,请问如何实现呢?如果限制只能输入字母请问如何实现呢?
参考技术A Private Sub Text1_Change()'有点懒If IsNumeric(Text1) = False Then
MsgBox "不是数字,请输入数字", 0, "提示"
Text1.SetFocus
Text1.SelStart = Len(Text1)
SendKeys "BACKSPACE"
End If
End Sub
Private Sub Text2_KeyPress(KeyAscii As Integer)
If Chr(KeyAscii) Like "[a-zA-Z]" = False Then
MsgBox "不是字母,请输入字母", 0, "提示"
KeyAscii = 0
End If
End Sub
Private Sub Text3_Change()
If IsNumeric(Text3) = False Then
MsgBox "不是数字,请输入数字", 0, "提示"
Text3.SetFocus
Text3.SelStart = Len(Text3)
SendKeys "BACKSPACE"
ElseIf Val(Text3) - CLng(Text3) <> 0 Then'有点懒
MsgBox "不是整数,请输入整数", 0, "提示"
End If
End Sub追问
sendkeysbackspace 是什么意思呢?
追答退格(删除。看你键盘上的名称,应该是一样)。主要针对键盘操作。不然就如推荐答案,只是简单的理论操作。否则会有漏洞或叫不完善。
本回答被提问者采纳 参考技术B Dim 输入限制 As String = "0123456789.abcdefghijklmnopqrstuvwxyz"Dim 输入字符 As Char = e.KeyChar
If InStr(输入限制, 输入字符) <> 0 Or e.KeyChar = ChrW(8) Then
If 输入字符 = "." And InStr(TextBox1.Text, 输入字符) <> 0 Then
e.Handled = True
Else
e.Handled = False
End If
End If
这段代码写在文本框的 KeyPress 事件里,.NET 的,6.0 好像类似,但没有 e.Handled = True 或者 False,这里为 True 时改成直接退出过程“Exit Sub”,False 不写了好像行,没有 6.0 没法给你试试 参考技术C 这个需要在文本框的keypress事件中对输入的keyascii进行检查, 如果不满足要求则输入无效,例如只能输入字母程式如下:
private sub Text1_keypress(KeyAscii as Integer)
select case keyascii
case 65 to 90,97 to 122 'A-Z, a-z
case else
Keyascii=0
end select
end sub 参考技术D 只能输入数字
Private Sub Form_Resize()
If Not IsNumeric(Text1.Text) Then
'如果输入的不是数字,删除非数字
Text1.Text = Val(Text1.Text)
Text1.SelStart = Len(Text1.Text)
End If
End Sub
Private Sub Text1_Change()
If Not IsNumeric(Text1.Text) Then
'如果输入的不是数字,删除非数字
Text1.Text = Val(Text1.Text)
Text1.SelStart = Len(Text1.Text)
End If
End Sub
只能输入整数
Private Sub Form_Resize()
tmp = ""
For n = 1 To Len(Text1.Text)
If Asc(Mid(Text1.Text, n, 1)) > 47 And Asc(Mid(Text1.Text, n, 1)) < 58 Then
tmp = tmp & Mid(Text1.Text, n, 1)
End If
Next
Text1.Text = Val(tmp)
Text1.SelStart = Len(Text1.Text)
End Sub
Private Sub Text1_Change()
tmp = ""
For n = 1 To Len(Text1.Text)
If Asc(Mid(Text1.Text, n, 1)) > 47 And Asc(Mid(Text1.Text, n, 1)) < 58 Then
tmp = tmp & Mid(Text1.Text, n, 1)
End If
Next
Text1.Text = Val(tmp)
Text1.SelStart = Len(Text1.Text)
End Sub
只输入字母
Private Sub Text1_Change()
'65 97 90 122
tmp = ""
For n = 1 To Len(Text1.Text)
If (Asc(Mid(Text1.Text, n, 1)) > 64 And Asc(Mid(Text1.Text, n, 1)) < 91) Or (Asc(Mid(Text1.Text, n, 1)) > 96 And Asc(Mid(Text1.Text, n, 1)) < 123) Then
tmp = tmp & Mid(Text1.Text, n, 1)
End If
Next
Text1.Text = tmp
Text1.SelStart = Len(Text1.Text)
End Sub 第5个回答 2013-02-08 '*********************************************************************************************
'名称 Sub_CheckNum
'作者 Morn Woo
'功能 检查键入的是否是数字 ,不是则释放按键
'参数 iPressKey(引用传递):按键的ASCII码;如果要处理浮点数的输入,则要把已经输入的部分作为参数sstr 传入
'应用方法 在keypress事件中调用,用事件的KeyAscii参数作为这里的参数iPressKey
'*********************************************************************************************
Sub Sub_CheckNum(ByRef iPressKey As Integer, Optional sStr = "")
sStr = Trim(sStr)
If Len(sStr) = 0 Then
'1处理自然数输入的情况
Select Case iPressKey
Case 48 To 57, 8, 13 '8是backspace,131enter
'处理数字字符问题
Case Else:: iPressKey = 0
End Select
Else
'2处理浮点数输入的情况
Select Case iPressKey
Case 45 '处理负号字符问题
If InStr(sStr, "-") > 0 Then: iPressKey = 0
Case 48 To 57, 8, 13 '处理数字字符问题
Case 44: If sStr = "" Then iPressKey = 0 '处理逗号字符问题
Case 46 '处理小数点字符问题
If InStr(sStr, ".") > 0 Then: iPressKey = 0
Case Else:: iPressKey = 0
End Select
End If
End Sub
以上是关于vb中,如何限制输入的文本框的内容只能是数字数或者字母?的主要内容,如果未能解决你的问题,请参考以下文章