解决方案 »
- VB编写的dll,使用vb.net调用的问题
- 怎样将一个接口设为NULL? Public Interface ICogRegion Dim i As ICogRegion = NULL会报错
- 控件tabstrip一些问题求各位帮忙!
- mdi窗体怎么才加上按纽控件
- 自定义属性的问题!
- 一个关于数据传输的问题~~! 在线等待
- 不知道哪里有VB的纸牌游戏源码例子下载??
- 根据http协议怎样进行winsock的流程控制和封装?
- 推荐几本好书啊,vb方面的
- 请问有谁知道,用vb编程时,在DataGrid中如何显示出复选按钮?如有何其他控件也好。谢谢!!!
- 找千千静听的歌词秀界面的鼠标样式
- 在RICHTEXTBOX输入一个字符,一种是用输入法输入的,一种是用键盘直接输入的,如何将用输入法输入的字符,在输入后立即转换为指定字符
为什么这里不是呢?
KeyAscii = 0Private Sub Text1_KeyPress(KeyAscii As Integer)
Cls
Dim char As String
char = Chr(KeyAscii)
KeyAscii = Asc(UCase(char))
Text1.Text = String(6, KeyAscii)
KeyAscii = 0
End Sub
Text1_KeyPress事件尚未完成,也就是说,Text1_KeyPress所产生的一个A在这时候还没写入Text1中。这就导致了6+1=7
具体验证如下,添加代码:Private Sub Text1_Change()
Debug.Print Len(Text1.Text)
End Sub
Private Sub Text1_KeyPress(KeyAscii As Integer)
KeyAscii = Asc(UCase(Chr(KeyAscii)))
Text1.Text = String(6, Chr(KeyAscii))
KeyAscii = 0
End Sub
这一句确实是清空了的啊,但由于你没过滤掉KeyAscii的效果,在这个语句号还是录入了一个字符啊.而且你注意一下,你每按一个键时,出现的那7个字符串,你的插入符都是停在"第1个之后",这就是你在后面输入的那个字符.你把我在4楼说的代码中最后一句改成这个就很明显了
KeyAscii = vbKeyA
要过滤掉那个key的话加一句
KeyAscii = 0
- -
不是想达到什么目的 - -
我就是不理解为什么这样了
Private Sub Text1_Change()
Debug.Print Len(Text1.Text)
End Sub和加一句
KeyAscii = vbKeyA
效果一样了 - -
按什么都出一个 A
KeyAscii = Asc(UCase(Chr(KeyAscii)))
Text2.Text = String(6, KeyAscii)
'KeyAscii = 0
End Sub另一种解决方法可以写在Text1_KeyUp事件中,它会在键盘完全还原时再处理text1=....,结果就不一样了
Private Sub Text1_Change()
Debug.Print Text1.Text
End SubPrivate Sub Text1_KeyPress(KeyAscii As Integer)
Cls
Dim char As String
char = Chr(KeyAscii)
KeyAscii = Asc(UCase(char))
Text1.Text = String(6, KeyAscii - 1)
End Sub
看看这个,它表示change事是怎么执行的。