Vb中我用textbox的change事件判断每个字节输入的类型,如不符合条件则提示
。例如,长度设为5个字符串,第三个字符设为数字,如果输非数字则提示。到这里,我怎么实现输入的非数字自动清除,让我重新输入,而不是我手动删除。只是要删除刚输入的第三字符,前...
。例如,长度设为5个字符串,第三个字符设为数字,如果输非数字则提示。到这里,我怎么实现输入的非数字自动清除,让我重新输入,而不是我手动删除。
只是要删除刚输入的第三字符,前面正确的不删除。不是要重获整个textbox的焦点,求高手惠予指教。 展开
只是要删除刚输入的第三字符,前面正确的不删除。不是要重获整个textbox的焦点,求高手惠予指教。 展开
1个回答
2016-05-14
展开全部
Private Sub Text1_Change()
If IsNumeric(Mid(Text1.Text, 3, 1)) = True Then
Text1.Text = Replace(Text1.Text, Mid(Text1.Text, 3, 1), "")
Text1.SelStart = Len(Text1.Text)
End If
End Sub
'或者可以在按数字键时
Private Sub Text1_KeyPress(KeyAscii As Integer)
If KeyAscii > 47 And KeyAscii < 59 Then KeyAscii = 0
End Sub
If IsNumeric(Mid(Text1.Text, 3, 1)) = True Then
Text1.Text = Replace(Text1.Text, Mid(Text1.Text, 3, 1), "")
Text1.SelStart = Len(Text1.Text)
End If
End Sub
'或者可以在按数字键时
Private Sub Text1_KeyPress(KeyAscii As Integer)
If KeyAscii > 47 And KeyAscii < 59 Then KeyAscii = 0
End Sub
更多追问追答
追问
我要怎么做才能在msgbox提示后,错误字节自动清除并重获光标焦点,如上代码,若case2输入不对如何清除输入,又保留前面的case1输入的内容保留
追答
Dim Txte1 As String, Txte2 As String, cs
Private Sub Form_Load()
Txte1 = ""
Txte2 = Text1.Text
End Sub
Private Sub Form_Click()
MsgBox Txte2 & vbCrLf & "保留的非数字是" & Mid(Txte2, 3, 1), vbOKOnly, "Text1.Change后,如果第三个不是数字就保留最新的"
Text1.SelStart = 1
End Sub
Private Sub Text1_Change()
If IsNumeric(Mid(Text1.Text, 3, 1)) = False And Text1.SelStart = 3 Then
Txte1 = Text1.Text '错啦,case1、case2是什么,用不着吧。
Text1.Text = Replace(Text1.Text, Mid(Text1.Text, 3, 1), "", 1, 1)
Text1.SelStart = Len(Text1.Text)
MsgBox "输了非数字" & vbCrLf & "刚输入的字符已保留,若要查看单击窗体", vbOKOnly, "提示"
Txte2 = Replace(Text1.Text, Left(Text1.Text, 2), Left(Txte1, 3))
End If
Select Case cs
Case "tenet"
Case "digital"
End Select
End Sub
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询