标题:打字练习时,收集那些打错过的字(已被用退格键删除重打),过程A行,过程B ...
只看楼主
nhjsjjs
Rank: 1
等 级:新手上路
威 望:1
帖 子:17
专家分:0
注 册:2016-9-4
结帖率:100%
已结贴  问题点数:6 回复次数:2 
打字练习时,收集那些打错过的字(已被用退格键删除重打),过程A行,过程B不行。
打字练习后,如果把曾经打错且当即用退格键删除的字收集起来(尽管当时已经重打改正),自己琢磨一下,为什么会打错?是记错了代码?还是手指不到位?还是什么其他原因?
这样对提高打字水平是很有帮助的。过程A是给普通文本框使用的,其中的变量a存放每次按退格键删除的一个字符,b存放累积的被删除的字符串。这个过程能达到要求。
而过程B是把普通文本框换成了“富文本框”。代码几乎与过程A一样。但是就是不能达到要求。不知要怎样来解决。

Option Explicit
Dim a$, b$
'===================过程A=======符合要求
Private Sub Text1_KeyPress(KeyAscii As Integer)
If KeyAscii = 8 And Text1.SelStart > 0 Then
a = Mid$(Text1.Text, Text1.SelStart, 1)
Label1.Caption = a
b = b & a
Label2.Caption = b
End If
End Sub

'===============过程B=========不符合要求
Private Sub RichTextBox2_KeyPress(KeyAscii As Integer)
If KeyAscii = 8 And RichTextBox2.SelStart > 0 Then
a = Mid$(RichTextBox2.Text, RichTextBox2.SelStart, 1)
Label1.Caption = a
b = b & a
Label2.Caption = b
End If
End Sub
搜索更多相关主题的帖子: 打字 删除 过程 Sub If 
2019-06-15 19:46
wufuzhang
Rank: 9Rank: 9Rank: 9
来 自:广州
等 级:贵宾
威 望:21
帖 子:206
专家分:1346
注 册:2017-8-9
得分:6 
回复 楼主 nhjsjjs
我试了一下,Text控件触发KeyPress事件的时候,不会修改文本框内容,事件结束后才修改;
而RichText控件触发KeyPress事件的时候,内容已经修改了,所以达不到你想要的结果。


RichText改用KeyDown事件,把代码复制过来就可以实现你的功能了。

PS:两个控件的KeyPress事件有这个差异,就不知道微软怎么想的了。

不经历千百遍的调试,怎能体会成功时那一刹那的喜悦。
2019-06-15 21:30
nhjsjjs
Rank: 1
等 级:新手上路
威 望:1
帖 子:17
专家分:0
注 册:2016-9-4
得分:0 
十分感谢wufuzhang的帮助。试验成功了!
2019-06-15 21:42



参与讨论请移步原网站贴子:https://bbs.bccn.net/thread-495278-1-1.html




关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.557359 second(s), 8 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved