winform 方向键焦点丢失问题(keydown event not work)
在项目中遇到了,方向键不能被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; }}??