抱歉,据我再次测试,这个程序在某些时候会出问题。
所谓的某些时候就是指:我在一个普通文本框中迅速地按键,然后突然用鼠标点击经过这个程序处理过的文本框时,让它获得了焦点,这时,变量中就会记录下获得焦点之后的输入,但是,文本框中没有显示。
我想,可能是文本框获得焦点后就可以获取KeyPress和KeyDown事件,但是在一段时间内它不会对输入作出响应。
于是,我修改程序,害我增加了两个辅助变量。
修正版如下:
Dim Pws As String, Keya As Integer, Keyl As Integer
Private Sub TexPW_Change()
Select Case Keya
Case 8, 46
If Keyl = 0 Then
Pws = Left(Pws, TexPW.SelStart) & Mid(Pws, TexPW.SelStart + 2)
Else
Pws = Left(Pws, TexPW.SelStart) & Mid(Pws, TexPW.SelStart + Keyl + 1)
End If
Case Else
Pws = Left(Pws, TexPW.SelStart - 1) & Chr(Keya) & Mid(Pws, TexPW.SelStart + Keyl)
End Select
End Sub
Private Sub TexPW_KeyDown(KeyCode As Integer, Shift As Integer)
Keya = KeyCode: Keyl = TexPW.SelLength
End Sub
Private Sub TexPW_KeyPress(KeyAscii As Integer)
Keya = KeyAscii: Keyl = TexPW.SelLength
Select Case KeyAscii
Case Is < 0: KeyAscii = -24071
Case 8
Case 13: KeyAscii = 0
Case Else: KeyAscii = 42
End Select
End Sub

评论