我正在寻找一种在 C#中的Windows 窗体应用程序中实现常用 Windows 键盘快捷键(例如Ctrl+ F、Ctrl+ N)的最佳方法。
Ctrl
F
N
该应用程序有一个主窗体,它承载许多子窗体(一次一个)。当用户点击Ctrl+F时,我想显示一个自定义搜索表单。搜索表单将取决于应用程序中当前打开的子表单。
我正在考虑在 ChildForm_KeyDown 事件中使用类似的东西:
if (e.KeyCode == Keys.F && Control.ModifierKeys == Keys.Control) // Show search form
但这不起作用。当您按下某个键时,该事件甚至不会触发。解决办法是什么?
您可能忘记将表单的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); }