在项目中遇到了,方向键不能被keydown event 捕捉的问题
下面是解决方案
button1.PreviewKeyDown +=new PreviewKeyDownEventHandler(button1_PreviewKeyDown);
button1.KeyDown += new KeyEventHandler(button1_KeyDown);
1.取消方向键丢失焦点的问题
protected override bool ProcessDialogKey(Keys keyData) { switch (keyData) { case Keys.Left: // 处理代码 break; case Keys.Right: // 处理代码 break; case Keys.Up: // 处理代码 break; case Keys.Down: // 处理代码 break; } return base.ProcessDialogKey(keyData); }
可以直接return false 处理
protected override bool ProcessDialogKey(Keys keyData) { switch (keyData) { case Keys.Left: case Keys.Right: case Keys.Up: case Keys.Down: return false; } return base.ProcessDialogKey(keyData); }
2.如果上面不好使的话,可能是因为winform方向键被占用,无法在下层使用,需要被激活
private void button1_PreviewKeyDown(object sender, PreviewKeyDownEventArgs e) { switch (e.KeyCode) { case Keys.Down: case Keys.Up: e.IsInputKey = true; break; } }