关于触发键盘事件的问题

guofu_9070 2011-07-08 04:03:00
一个窗体,没有关闭按钮,想通过快捷键关闭,请问该如何设置CTRL+F4关闭程序,是在Form_KeyDown事件中么?但是有时焦点在TEXT控件中时,按下两个键,Form_KeyDown事件不响应,该如何做呢?请高人指点迷津谢谢
...全文
133 10 打赏 收藏 转发到动态 举报
写回复
用AI写文章
10 条回复
切换为时间正序
请发表友善的回复…
发表回复
赵4老师 2011-07-13
  • 打赏
  • 举报
回复
[Quote=引用 2 楼 xxfly 的回复:]
是否已设置 窗体keypreview=true
[/Quote]
正解!
zhoushunda960 2011-07-11
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 ybh37 的回复:]
搜索 全局快捷键 或者 全局钩子
应该能找到你想要的
不需要用 Form_KeyDown
[/Quote]
VB调用API函数,开销是很大的。VB既然提供了这个功能,为什么不直接用?
lliai 2011-07-11
  • 打赏
  • 举报
回复
我一般在窗体的各个控件的Form_KeyDown都写相同的程序;这是笨办法。呵呵,可也有效。
wxs5211614 2011-07-11
  • 打赏
  • 举报
回复
用钩子偶就可以了啊!
Gordon_Freeman 2011-07-10
  • 打赏
  • 举报
回复
[Quote=引用 5 楼 hellogmh 的回复:]

最简单的方法
VB code

Private Sub Form_KeyDown(KeyCode As Integer, Shift As Integer)
If KeyCode = vbKeyF4 And Shift = vbCtrlMask Then
Unload Me
End If
End Sub
[/Quote]

KeyDown中还有一个参数Shift,取值有下列3种情况

vbShiftMask
vbCtrlMask
vbAltMask

当按下相对应的组合键时,通过判断Shift就可以实现相应的功能,焦点落在TextBox控件上经过测试Form仍然可以触发KeyDown事件
Gordon_Freeman 2011-07-10
  • 打赏
  • 举报
回复
最简单的方法

Private Sub Form_KeyDown(KeyCode As Integer, Shift As Integer)
If KeyCode = vbKeyF4 And Shift = vbCtrlMask Then
Unload Me
End If
End Sub
路小雨 2011-07-08
  • 打赏
  • 举报
回复
不用hook
用 GetAsyncKeyState api 就行了
再多一个计数器 就可以实现

不懂加我QQ839658030
贝隆 2011-07-08
  • 打赏
  • 举报
回复
最好的办法就是Hook
当Hook到指定按键消息时,关闭即可
xxfly 2011-07-08
  • 打赏
  • 举报
回复
是否已设置 窗体keypreview=true
咸清 2011-07-08
  • 打赏
  • 举报
回复
搜索 全局快捷键 或者 全局钩子
应该能找到你想要的
不需要用 Form_KeyDown

7,763

社区成员

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

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