我试图在一个小的测试Windows窗体应用程序上发生一些键盘响应,我有一个粗略的解决方案,它是覆盖ProcessCmdKey.但是,我遇到了几个问题,而且我发现了一些不一致的问题.
不同的事件:在参数中ref Message msg, Keys keyData,有没有办法告诉Even是KeyDown,KeyUp还是KeyPress?
KeyPress:我看过的所有地方都说KeyPress,即重复的键盘输入,只发生在字符键上,箭头键不是.但是,事件处理程序被频繁地调用,并且在相同的mannor /具有相同的行为中,箭头键作为字符键.这是面对KeyPress事件,还是其他什么?
理想情况下,我喜欢在表单级别处理所有键盘事件而不让它们传递给表单上的控件的方法.但是,所有文档都让我很困惑,并且错过了关键点,因此我无法完成此操作.
欢迎任何这些主题的帮助.谢谢!
我在WinForms应用程序中遇到以下问题.我正在尝试实现热键,我需要在控件处于活动状态时处理Key消息,无论焦点是否在该控件内的文本框上,等等.
重写ProcessCmdKey可以很好地为此工作,并且完全符合我的要求,但有一个例外:
如果用户按下某个键并保持按下,则ProcessCmdKey会一直触发WM_KEYDOWN事件.
但是,我想要实现的是用户必须在另一个热键操作触发之前再次释放按钮(因此,如果有人坐在键盘上,它将不会导致连续的热键事件).
但是,我找不到捕获WM_KEYUP事件的位置,所以我可以设置一个标志,如果它应该再次处理ProcessCmdKey消息?
有人可以帮到这里吗?
谢谢,
汤姆