急求关于vb中keypress与change事件的讲解。

PrivateSubText1_KeyPress(KeyAsciiAsInteger)Text1.Text="P"EndSubPrivateSubText2_change... Private Sub Text1_KeyPress(KeyAscii As Integer)
Text1.Text = "P"
End Sub

Private Sub Text2_change()
Text2.Text = "P"
End Sub
程序运行后,如按P键,为何text1中出现pP。而text2中只会出P。
展开
 我来答
cnmahj
2011-08-09 · TA获得超过954个赞
知道小有建树答主
回答量:785
采纳率:0%
帮助的人:1068万
展开全部
keypress执行时text1的文字显示处理还没有开始,在这时给Text1复制了P。
当keypress事件处理完毕,处理text1的change事件时,系统才在text1的第一个位置插入一个p。
因此结果为pP。

第二个事件,实在text2的内容被系统改为p之后,才执行change事件,因此最后的结果是P替换了p变成只有P了。

textbox是在keypress事件之后将键入文字放入文本框的,因此出现了上述差异。
提示,这两个例子用于研究可以,请不要用于实践。他们干扰了系统的处理,会导致各种问题。
如果要处理按键,请在keydown和keyup中处理。
HeXian000
2011-08-09 · TA获得超过339个赞
知道小有建树答主
回答量:502
采纳率:0%
帮助的人:368万
展开全部
你按P,就算你不写任何代码,系统也有一个操作:就是在文本框中插入"p"
keypress在系统插入p之前被执行,故text1.text="P"再加上你输入的一个p,所以是"pP"
text2的change是系统插入p之后被执行,所以覆盖了原来你插入的"p",变成了"P"
本回答被提问者和网友采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
aaa12345aaaaa
2011-08-09 · 超过45用户采纳过TA的回答
知道答主
回答量:199
采纳率:0%
帮助的人:109万
展开全部
keypress在按键显示p之前产生,故text1.text="p"还有你输入的一个p,所以有两个
text2的change是你按键之后,所以只会有一个
追问
但赋值语句text1=P和text2=P,不是应该把text1和text2的文本内容都变为P了吗,不应该只显示P吗,为什么text1中多显示了按的那个p键
追答
你每个按键是清楚了原文本框之后按的吗?按键是追加在光标之后的,也就相当于text1.text = text1.text & chr(keyascii)
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(1)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式