一个很简单的问题难到了新手

rypgood 2006-06-05 11:30:59
我在窗体上画了个text控件
现在需要判断在里面输入的东西,实现两个功能
一,
如果不是数字,那么text里面不输出东西来并且beep一下
比如,我输入的是123ab
那么显示的是123并且beep了两次
二,
如果我输入的数字和前面的有重复,则不输出输入的数字,并且beep一下
比如我输入1234217
则输出12347并且在输入第二个2和第二个1时候分别beep一次

有谁帮忙写个代码实现一下吗?谢谢啦!!
...全文
111 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
ilove8 2006-06-06
  • 打赏
  • 举报
回复
up
rypgood 2006-06-06
  • 打赏
  • 举报
回复
谢谢楼上两位,你们的都正确,但是相对来说,air936542(air936542) 的会比较简洁一些,你们说是不是呢?所以我准备马上结贴,有意见留言哦.对了,verywzm(寒江雪)的程序我有点看不懂哦,找个时间和你请教哦.今天晚上结贴,ok!@
air936542 2006-06-06
  • 打赏
  • 举报
回复
Private Sub TEXT1_KeyPress(KeyAscii As Integer)
If (KeyAscii < 48 Or KeyAscii > 57) And KeyAscii <> 8 Then
Beep
KeyAscii = 0
End If
x = Chr(KeyAscii)
For i = 1 To Len(Text1.Text)
If Mid(Text1.Text, i, 1) = x Then Beep: KeyAscii = 0
Next i
End Sub
'完全符合你的要求,但是我提醒一下,text不仅可以输入文字,也可以用鼠标右键粘贴进去
verywzm 2006-06-06
  • 打赏
  • 举报
回复
Private Sub Text1_KeyPress(KeyAscii As Integer)
Select Case KeyAscii
Case Asc("-") '允许负数
If Text1.SelStart = 0 Then
If Left(Text1.Text, 1) = "-" Then
KeyAscii = 0
Beep
End If
Else
KeyAscii = 0
Beep
End If
Case 8
'无变化,退格键不屏蔽
Case Asc(" ") '32
If Text1.SelLength = 0 Then
KeyAscii = 0
Beep
End If
Case Asc(".") '46 '允许小数点
If InStr(Text1.Text, ".") Then
KeyAscii = 0
Beep
End If

Case Is <= Asc(9)
If InStr(Text1.Text, Chr(KeyAscii)) <> 0 Then
KeyAscii = 0
Beep
End If
Case Is < Asc(0) '48
KeyAscii = 0
Beep
Case Is > Asc(9) '57
KeyAscii = 0
Beep

End Select
End Sub
PANBing 2006-06-05
  • 打赏
  • 举报
回复
可以在KeyDown事件中处理这些问题

7,763

社区成员

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

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