给窗体Form1添加了Form1_KeyDown事件响应键盘的上下左右按键,但是开始时需要点击一个按钮,点击之后按上下左右按键,结果是焦点在几个按钮之间来回切换,根本没有响应我写的按键事件。怎么解决?给Form1的构造函数加了this.KeyPreview=true;没用,也重载了
protected override bool ProcessCmdKey(ref Message msg, Keys keyData)
{
return base.ProcessCmdKey(ref msg, keyData);
}
还是没用,在每个按钮的Chick事件中加this.Focus();还是没用,把每个按钮的TabStop属性设置为False依然没有。。。醉了!!!
C# 窗体键盘事件 问题!
答案:2 悬赏:0 手机版
解决时间 2021-03-12 01:01
- 提问者网友:火车头
- 2021-03-11 13:01
最佳答案
- 五星知识达人网友:不如潦草
- 2021-03-11 13:42
你都base 了ProcessCmdKey重载不重载有什么区别
这里因为你是要响应按键 所以没办法转移focus
只能去拦截键盘消息
自己搜索下键盘钩子吧 搜一大片
拦截了方向键自己处理就好
我能想到就这个办法 大神们要是有其他简单的方法贴出来一起学习下吧
这里因为你是要响应按键 所以没办法转移focus
只能去拦截键盘消息
自己搜索下键盘钩子吧 搜一大片
拦截了方向键自己处理就好
我能想到就这个办法 大神们要是有其他简单的方法贴出来一起学习下吧
全部回答
- 1楼网友:一叶十三刺
- 2021-03-11 15:07
此类问题注意要点键盘事件的触发条件。当form的keypreview属性为false的时候(默认),只有获得焦点的控件才能接收键盘事件,而设置为true,则任何时候form本身都可以接收事件。所以通常可以把此属性设置为true,然后所有键盘事件都写在form_keydown里面。
我要举报
如以上问答信息为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
推荐资讯