2014-09-30 166 views
0

嘗試在鍵盤上按下按鈕時觸發事件。我也設置了Form1屬性以使KeyPreview爲True。但它仍然沒有開火,我也看不出有什麼不對。Keydown Event not firing

private void Form1_KeyDown(object sender, KeyEventArgs e) 
{ 
    if (e.Modifiers == Keys.A) 
    MessageBox.Show("A pressed"); 
    else if (e.Modifiers == Keys.Alt && e.KeyCode == Keys.F1) 
    MessageBox.Show("Combination of ALt and F1 pressed"); 
} 
+3

顯示處理程序不會幫助,你需要證明,你附加事件。 – 2014-09-30 12:23:07

+0

我討厭看到沒有花括號的'if'語句。 – 2014-09-30 12:25:23

+0

爲什麼'e.Modifiers'?爲什麼不'e.KeyCode'? – elimad 2014-09-30 12:26:02

回答

0

設置事件

this.KeyDown += Form5_KeyDown; 
this.KeyPreview = true; 

事件

void Form5_KeyDown(object sender, KeyEventArgs e) 
{ 
    if (e.KeyCode == Keys.A) 
     MessageBox.Show("A pressed"); 
    else if (e.Modifiers == Keys.Alt && e.KeyCode == Keys.F1) 
     MessageBox.Show("Combination of ALt and F1 pressed"); 
} 

不要忘了KeyPreview = true,如果要處理所有​​

+0

救生員!這工作 – user263029 2014-09-30 12:41:47

1

嘗試邀請碼:

if (e.KeyCode==Keys.A) 
       MessageBox.Show("A pressed"); 
      ... 

也請記住,當你按下相應的按鈕

+0

試過了,仍然沒有開火。另外KeyPreview屬性在正確的表單上設置爲true。 – user263029 2014-09-30 12:30:50

0

形式的KeyPreview屬性設置爲true Form1必須具有焦點。

否則,子控件將首先捕獲事件。