请问如何限制文本框,只能输入字母或数字

zjkk1011 2010-01-18 02:54:37
如果用KeyPress事件,好像不能截获“del”键的KeyAscii
如果用MaskEdBox控件,会显示出固定的字符。
有没有更好的方法?
...全文
211 7 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
SYSSZ 2010-01-18
  • 打赏
  • 举报
回复
Private Sub Text1_Change()
For i = 1 To Len(Text1)
S = Mid(Text1, i, 1)
If S Like "[!0-9]" And S Like "[!A-Z]" And S Like "[!a-z]" Then
Text1 = Replace(Text1, S, "")
End If
Next
End Sub
zzyong00 2010-01-18
  • 打赏
  • 举报
回复
这种问题,随便google一下,也能找到啊
趁现在google还能用,快点儿用吧
嗷嗷叫的老马 2010-01-18
  • 打赏
  • 举报
回复
那直接子类化拦截wm_keydown就行罗.

zjkk1011 2010-01-18
  • 打赏
  • 举报
回复
感谢cbm666,可是我试了一下,用KeyCode = 0好像并不能阻止键盘录入,非法字符还是能显示出来。
cbm6666 2010-01-18
  • 打赏
  • 举报
回复
Private Sub Text1_KeyDown(KeyCode As Integer, Shift As Integer)
'0-9的ASC值是48-57,A-Z大写是65-90,A-Z小写是97-122, KeyCode自动转为大写返回
If (KeyCode >= 48 And KeyCode <= 57) Or (KeyCode >= 65 And KeyCode <= 90) Then
Else
KeyCode = 0 '不给值
MsgBox ("输入无效,请重新输入!")
End If
End Sub
zjkk1011 2010-01-18
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 cbm666 的回复:]
KeyPress包括F1-F12也是无法截获的

使用 KeyDown 吧

Private Sub Form_KeyDown(KeyCode As Integer, Shift As Integer)
  MsgBox KeyCode
End Sub

[/Quote]

KeyDown事件如何阻止键盘输入?达到KeyPress中KeyAscii = 0 那样的效果?
cbm6666 2010-01-18
  • 打赏
  • 举报
回复
KeyPress包括F1-F12也是无法截获的

使用 KeyDown 吧

Private Sub Form_KeyDown(KeyCode As Integer, Shift As Integer)
MsgBox KeyCode
End Sub

1,453

社区成员

发帖
与我相关
我的任务
社区描述
VB 控件
社区管理员
  • 控件
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧