为何keypress执行两次?

Dublue 2003-11-29 06:03:40
我在form中写了这么一条语句:
Private Sub Form_KeyPress(KeyAscii As Integer)
If cmdSave.Enabled = True And KeyAscii = 19 then
MsgBox "haha"
End If
End Sub
执行后按Ctrl+S
结果msgbox弹出两次???不知为何?
...全文
446 12 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
12 条回复
切换为时间正序
请发表友善的回复…
发表回复
Dublue 2003-12-09
  • 打赏
  • 举报
回复
to xiamei(),sendkeys的使用要在控件获得焦点之后,这样写试试:
Private Sub Text1_KeyPress(Index As Integer, KeyAscii As Integer)
For Index = 0 To 4
If KeyAscii = 13 Then
text1(index).setfocus
SendKeys "{TAB}"
End If
Next Index
End Sub
Dublue 2003-12-09
  • 打赏
  • 举报
回复
to MrRedSnow(慕容红雪),是false,但没用;最后我只好把代码写在其它控件的keypress事件里,这样虽能实现同样功能,但麻烦些,很多控件都要加,不如写在form里方便,范围大
xiamei 2003-12-02
  • 打赏
  • 举报
回复
to cngxylyh(olo):
我的目的是从0开始,输完一个文本框后按回车键进入下一个文本框。
文本框是控件数组。
我的代码不听话,不实现功能。
谢谢。
慕容红雪 2003-12-02
  • 打赏
  • 举报
回复
把cmdSave.Default=true改成false。
cngxylyh 2003-12-02
  • 打赏
  • 举报
回复
楼主,你将keypress改成keydown或者keyup试试?效果是一样的。

楼上的如何不能执行,现象如何?说清楚啊!
xiamei 2003-12-02
  • 打赏
  • 举报
回复
大哥,借宝地一用,或者你教教我,我下面的程序不能执行。
Private Sub Text1_KeyPress(Index As Integer, KeyAscii As Integer)
For Index = 0 To 4
If KeyAscii = 13 Then
SendKeys "{TAB}"
End If
Next Index
End Sub
Dublue 2003-12-02
  • 打赏
  • 举报
回复
我写msgbox "haha"是为了测试,其它地方没有调用
Dublue 2003-12-02
  • 打赏
  • 举报
回复
我单步跟踪,发现keypress事件被连续执行了两次!!
详细过程是:判断if条件-〉取得cmd属性-〉msgbox->结束-〉再来一次
Dublue 2003-11-30
  • 打赏
  • 举报
回复
cmdSave是个保存按钮,在窗体上,不能去掉呀
danielinbiti 2003-11-30
  • 打赏
  • 举报
回复
可能其他地方的KEYPRESS,KEYDOWN,KEYUP有相关的代码或者由地方调用这个事件过程吧
但这段代码没什么问题吧,至少我试了没问题
planetike 2003-11-29
  • 打赏
  • 举报
回复
这里可能问题在cmdsave 上,你试试去掉这东西,只会msgbox一次的。
yedapeng 2003-11-29
  • 打赏
  • 举报
回复
请问:你的cmdsave是不是在窗体上?

7,785

社区成员

发帖
与我相关
我的任务
社区描述
VB 基础类
社区管理员
  • VB基础类社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧