你可以将些内容写成一个函数。 Private Sub GetKeyPress(KeyAscii As Integer) Dim bolT As Boolean KeyAscii = Asc(UCase$(Chr$(KeyAscii))) If KeyAscii = Asc(".") Then Text1.Locked = False ElseIf KeyAscii = 8 Then '该键为Back Space,为了删除 Text1.Locked = False ElseIf KeyAscii >= Asc("0") And KeyAscii <= Asc("9") Then Text1.Locked = False Else Text1.Locked = True End If End Sub到时侯可以随时调用Private Sub Text1_KeyPress(KeyAscii As Integer) GetKeyPress KeyAscii End Sub
Public Sub CheckKeyPress(TargetTextBox As TextBox, KeyAscii As Integer, Optional DecimalCount As Integer = 2) KeyAscii = Asc(UCase$(Chr$(KeyAscii)))
If KeyAscii = Asc("-") And TargetTextBox.SelStart = 0 Then TargetTextBox.Locked = False ElseIf KeyAscii = Asc(".") And InStr(TargetTextBox.Text, ".") = 0 Then TargetTextBox.Locked = False ElseIf KeyAscii = 8 Then TargetTextBox.Locked = False ElseIf KeyAscii >= Asc("0") And KeyAscii <= Asc("9") And _ ((InStr(TargetTextBox.Text, ".") > 0 And _ (Len(TargetTextBox.Text) - InStr(TargetTextBox.Text, ".")) < DecimalCount) Or _ InStr(TargetTextBox.Text, ".") = 0) Then TargetTextBox.Locked = False Else TargetTextBox.Locked = True End If End Sub 优化一下,呵呵
假如可以更简单而且更有效的办法你喜欢选择哪个?
虽然实现的功能的可以一样但是我喜欢简单的。re x_bigman:
TextBox数组我用过,但是好像还不是最简单的?(无概念性)
我想最好是能用User Control解决
MaskEdBox1.Mask="#########".
这样可能不太好,MaskEdBox如果用了Mask好像是要限制输入长度的
Mask="###########.##"
所以偶想找一个最简单的解决办法,用TextBox Array + KeyPress
Copy一下还是很快的,但是我总以为可以还有更简单的办法的。别生气啊。
用Isnumeric(Text)就可以判断了
或者你自己做一个控件,也很简单的,然后把所有的只能输入数字的Text控件换成你的控件
Private Sub GetKeyPress(KeyAscii As Integer)
Dim bolT As Boolean
KeyAscii = Asc(UCase$(Chr$(KeyAscii)))
If KeyAscii = Asc(".") Then
Text1.Locked = False
ElseIf KeyAscii = 8 Then '该键为Back Space,为了删除
Text1.Locked = False
ElseIf KeyAscii >= Asc("0") And KeyAscii <= Asc("9") Then
Text1.Locked = False
Else
Text1.Locked = True
End If
End Sub到时侯可以随时调用Private Sub Text1_KeyPress(KeyAscii As Integer)
GetKeyPress KeyAscii
End Sub
你又想只让他输入字母,或在一定位置输入数字,一定位置输入字母,是不是又要改User
Control,是不是每种情况你都要编一个User Control。这样是把程序搞复杂还是简单了。
你还想不想让人看懂你的程序。
全部在User Control写完以后,调用会是很简单的
比如以后还需要用到的话,是很简单就可以用的。刚毕业,脑袋里奇怪的想法多得很。总之,以后还请大家多多帮忙。
If KeyAscii = Asc("-") And TargetTextBox.SelStart = 0 Then
TargetTextBox.Locked = False
ElseIf KeyAscii = Asc(".") And InStr(TargetTextBox.Text, ".") = 0 Then
TargetTextBox.Locked = False
ElseIf KeyAscii = 8 Then
TargetTextBox.Locked = False
ElseIf KeyAscii >= Asc("0") And KeyAscii <= Asc("9") And _
((InStr(TargetTextBox.Text, ".") > 0 And _
(Len(TargetTextBox.Text) - InStr(TargetTextBox.Text, ".")) < DecimalCount) Or _
InStr(TargetTextBox.Text, ".") = 0) Then
TargetTextBox.Locked = False
Else
TargetTextBox.Locked = True
End If
End Sub
优化一下,呵呵