2011-03-19 76 views
2

我试图捕捉功能键F1〜F12 & 4个方向键&主页,插入,删除,End,Page Up & Down键。如何 ????C#Windows窗体:如何捕捉捕捉功能,箭头和导航键

private void Form1_KeyPress(object sender, KeyPressEventArgs e) 
{ 
} 
+1

p.s.插入Home&Page Up Down键他们的分类的名称是什么 – Moon 2011-03-19 10:19:56

+0

[KeyEvents on Form只能与CTRL结合使用](http://stackoverflow.com/questions/4634315/keyevents-on-form-only-作品 - 在组合与 - CTRL) – 2011-03-19 10:29:20

回答

1

重写表单的ProcessCmdKey()方法。在将键盘消息分派给具有焦点的控件之前,它将从消息循环中直接调用。这就是为什么重写WndProc()不起作用的原因。

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); 
    } 

从技术上讲,你也可以覆盖形式的方法的onkeydown用的KeyPreview =真实的,但这是一个丑陋的VB6不合时宜。