小编典典

在 Windows 窗体应用程序中实现键盘快捷键的最佳方法?

all

我正在寻找一种在 C#中的Windows 窗体应用程序中实现常用
Windows 键盘快捷键(例如Ctrl+ FCtrl+
N)的最佳方法。

该应用程序有一个主窗体,它承载许多子窗体(一次一个)。当用户点击Ctrl+F时,我想显示一个自定义搜索表单。搜索表单将取决于应用程序中当前打开的子表单。

我正在考虑在 ChildForm_KeyDown 事件中使用类似的东西:

   if (e.KeyCode == Keys.F && Control.ModifierKeys == Keys.Control)
        // Show search form

但这不起作用。当您按下某个键时,该事件甚至不会触发。解决办法是什么?


阅读 76

收藏
2022-04-22

共1个答案

小编典典

您可能忘记将表单的KeyPreview属性设置为
True。覆盖ProcessCmdKey()方法是通用解决方案:

protected override bool ProcessCmdKey(ref Message msg, Keys keyData) {
  if (keyData == (Keys.Control | Keys.F)) {
    MessageBox.Show("What the Ctrl+F?");
    return true;
  }
  return base.ProcessCmdKey(ref msg, keyData);
}
2022-04-22