2009-08-23 272 views
4

我無法獲取Ctrl KeyUp事件處理程序中的鍵狀態,因爲Ctrl鍵被釋放。如何測試Ctrl鍵?

我是否必須測試事件參數的鍵碼?

有沒有其他辦法?

回答

13

將事件連接到KeyUp事件處理程序將工作。

下面的代碼將觸發時按Ctrl鍵被釋放:

private void Form1_KeyUp(object sender, KeyEventArgs e) 
{ 
    if (e.KeyCode == Keys.ControlKey) 
    { 
     MessageBox.Show("Control key up"); 
    } 
} 


如果你想,以測試是否按Ctrl組合被按下另一個按鍵,例如:Ctrl + F1然後下面的代碼片段可能適用:

private void Form1_KeyUp(object sender, KeyEventArgs e) 
{ 
    if (e.Control && e.KeyCode == Keys.F1) 
    { 
     MessageBox.Show("Control + F1 key up"); 
    } 
} 


邊注:您可能必須啓用表單上KeyPreview爲了趕都控制在一個位置KeyUp事件。

+0

在keyup事件處理程序中,e.Control == false。但e.keycode == keys.controlkey – Benny 2009-08-23 16:03:33

+0

@Benny,'e.KeyCode'知道哪個鍵被釋放。只有當控制鍵被保持時,'e.Control'才爲真,這就是爲什麼當釋放F1時**(e.Control && e.KeyCode == Keys.F1)'爲真** **控制鍵被保持。 – kdbanman 2015-11-19 18:30:31

0
private void textBox1_KeyDown(object sender, System.Windows.Forms.KeyEventArgs e) 
{ 
    if(e.Modifiers == Keys.Control) 
    ... 
} 
+1

在keyup中,e.modifiers == none – Benny 2009-08-23 16:00:52