我正在寻找在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); }