我想只使用预定义的字符才能在vb6中的文本框中使用。 我怎么能做到这一点?
预定义字符将类似0-9
和A, C, M, E
除了这些之外的所有其他字符都会将msgbox设为错误。它也可以是a,c,m,e
我可以使用Ucase()
来解决它。
答案 0 :(得分:7)
你可以;
private Sub atextbox_KeyPress(keyascii As Integer)
if InStr(1, "0123456789ACME", Chr$(keyascii)) = 0 Then keyascii = 0 '//case sensitive
End Sub
或
if Chr$(keyascii) like "[0-9]" or Chr$(keyascii) like "[ACMEacme]"
或者格式化
select case true
case chr$(keyascii) like "[0-9]"
case chr$(keyascii) like "[ACMEacme]"
case else
keyascii = 0
end select
答案 1 :(得分:5)
您可以检测使用KeyPress
事件输入的每个字符并检查ASCII值。如果将其设置为0,则将忽略印刷机。
请务必检查Change
事件以抓住粘贴等。
此外,请勿使用消息框,因为这会使用户烦恼。
答案 2 :(得分:2)
使用KeyPress事件:
Private Sub txtBox_KeyPress(KeyAscii As Integer)
Dim KeyChar As String
If KeyAscii > 31 Then 'ignore low-ASCII characters like BACKSPACE
KeyChar = Chr(KeyAscii)
If Not IsAllowed(KeyChar) Then
KeyAscii = 0
MsgBox.Show("The allowed characters are ... ")
End If
End If
End Sub
IsAllowed函数将包含允许的密钥代码。