试图在表单中使用KeyDown事件来捕获导航箭头向上和箭头向下

本文关键字:导航 表单 事件 KeyDown | 更新日期: 2023-09-27 18:07:48

我有一个flowlayoutPanel,动态添加了大约50个userControl .

我在表单中使用this.KeyPreview = true来捕获表单中的事件。现在我使用这个事件处理程序:

private void Form1_KeyDown(object sender, KeyEventArgs e)
{    
}

为KeyDown能够捕捉空格键,+字符和导航键pageUp和pageDown。

我还需要捕捉导航箭头向上和箭头向下,但唯一的工作我的解决方案是使用KeyUp事件处理程序像这样。当我使用事件处理器Form1_KeyUp事件时,我可以使用导航键arrowUp和arroeDown。

 private void Form1_KeyUp(object sender, KeyEventArgs e)
 {          
 }

我试图使用这个事件处理程序

private void Form1_PreviewKeyDown(object sender, PreviewKeyDownEventArgs e)
{    
}

但是当我点击导航箭头向上和箭头向下时,它永远不会被调用。

我希望能够捕获一切,如(pageUp, pageDown,空格键,+字符箭头向上和箭头向下)在KeyDown事件处理程序

欢迎任何帮助

试图在表单中使用KeyDown事件来捕获导航箭头向上和箭头向下

更简单的方法是重写ProcessCmdKey函数:

protected override bool ProcessCmdKey(ref Message msg, Keys keyData) {
  if (keyData == Keys.Up) {
    // do something here
    return true;
  } else {
    return base.ProcessCmdKey(ref msg, keyData);
  }
}