Johnhall
Johnhall
关注数: 0
粉丝数: 2
发帖数: 395
关注贴吧数: 3
星际天空群14956700++ 喜欢星际的朋友+~
星际天空14956700++ I am a Zealot@starcraft!欢迎星际迷加入
星际天空群14956700++ 欢迎喜欢星际的朋友加入!
星际天空14956700++ 欢迎喜欢星际的朋友加入!
星际天空群14956700++ 欢迎喜欢星际的朋友加入
星际天空群14956700++ for Zealots!特别欢迎教育网内的星际迷
星际天空群14956700++ 特别欢迎教育网玩家
星际天空群14956700++ 菜鸟勿入
介绍一个网站。。
不可理喻的Text_Change事件 不可理喻的Text_Change事件要求在一个文本框内只能输入数字,并且数字要是大于0小于Counter的一个整数.于是就这样写:Private Sub Txt_KeyPress(Keyascii as integer) If (KeyAscii<48 or KeyAscii>57) then ’屏蔽其他键和菜单加速键(最好还能屏蔽环境菜单,我不会,汗) KeyAscii=0 End IfEnd SubPrivate Sub Txt_Change() if Val(Txt.Text)<1 Then Txt.Text=1 ElseIf Val(Txt.Text)>Counter then Txt.Text=Counter End ifEnd Sub上述代码在一个简单程序中不会出错,但嵌在一个稍复杂点的程序中就会出现错误(这个程序代码可能就一百多行).如counter=3,文本原为1,选中文本,按2,按设想应该仍为2,可是却变成了3.为什么呢?逐句运行发现,先是触发Key_Press事件,由于2键是数字,这个事件过程不影响;接着发现文本框被清空了,进一步原来是把选中部分清空了,就自然地触发了Txt_Change事件,结果变成了1,再一次触发了change事件,但因为>0, counter Then TxtCur.Text = counter End If VScr.Value = Val(TxtCur.Text) - 1 Call VScr_ChangeEnd SubPrivate Sub TxtCur_KeyPress(KeyAscii As Integer) bSel = IIf(TxtCur.SelLength > 0, True, False) If (KeyAscii < 48 Or KeyAscii > 57) Then KeyAscii = 0 Exit Sub End IfEnd Sub这样就没问题了,不过只是这种情况而已,说不准还会是简单的那种情况,最好还要都考虑,真是不可理喻,这种小问题耗了多少时间呢?
首页
1
2
下一页