我在窗体上画了个text控件
现在需要判断在里面输入的东西,实现两个功能
一,
如果不是数字,那么text里面不输出东西来并且beep一下
比如,我输入的是123ab
那么显示的是123并且beep了两次
二,
如果我输入的数字和前面的有重复,则不输出输入的数字,并且beep一下
比如我输入1234217
则输出12347并且在输入第二个2和第二个1时候分别beep一次有谁帮忙写个代码实现一下吗?谢谢啦!!

解决方案 »

  1.   

    可以在KeyDown事件中处理这些问题
      

  2.   

    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
      

  3.   

    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不仅可以输入文字,也可以用鼠标右键粘贴进去
      

  4.   

    谢谢楼上两位,你们的都正确,但是相对来说,air936542(air936542) 的会比较简洁一些,你们说是不是呢?所以我准备马上结贴,有意见留言哦.对了,verywzm(寒江雪)的程序我有点看不懂哦,找个时间和你请教哦.今天晚上结贴,ok!@