2017-04-06 90 views
1

的我試圖打電話與鍵盤上的左右鍵功能,但不知道如何去做正確的方法。使用左/右鍵盤按鍵

在這種嘗試的結果是,按下左/右鍵盤按鍵的GUI元素之間只是切換通常的方式,並沒有作品給予的功能。不知道這裏出了什麼問題:

private void Form1_KeyDown(object sender, KeyEventArgs e) 
    { 
     if (e.KeyCode == Keys.Right) 
     { 
      func1(); 
     } 
     else if (e.KeyCode == Keys.Left) 
     { 
      func2(); 
     } 
    } 
+2

您是否在表單上啓用了KeyPreview? – Equalsk

+2

我想那是因爲你沒有處理事件。調試時斷點是否會觸發?我認爲[keyprieview屬性](https://msdn.microsoft.com/en-us/library/system.windows.forms.form.keypreview(v = vs.110).aspx)是你正在尋找的。 – Reniuz

回答

2

在某些註釋中提到的啓用keypreview的替代方法是覆蓋ProcessCmdKey方法。

protected override bool ProcessCmdKey(ref Message msg, Keys keyData) 
{ 
    if (keyData == Keys.Right) 
    { 
     func1(); 
     return true; 
    } 
    else if (keyData == Keys.Left) 
    { 
     func2(); 
     return true; 
    } 
    return base.ProcessCmdKey(ref msg, keyData); 
} 

欲瞭解更多信息,請參閱this MSDN article

+0

這似乎是正確的答案。將'KeyPreview'設置爲'true'並不總是足夠的,如果例如「Form」的'KeyDown'處理程序仍然不會被調用。一個'Button'有重點。 'ProcessCmdKey'總是被調用。 –

1

你的代碼工作正常,你不能事先按任何東西。我認爲你正在尋找一個通用的keydown,如圖所示here