2016-02-19 28 views
1

如何捕獲在ListView上按下的「ctrl + c」鍵?ListView上的Ctrl + C識別爲「LButton | Sift Key」

我想這樣的

private void listviewLogger_KeyUp(object sender, KeyEventArgs e) 
{ 
    if (sender != listviewLogger) return; 

    //if (e.Control && e.KeyData == (Keys.Control | Keys.C)) 
    if (e.Control && e.KeyCode == Keys.C) 
     CopySelectedValuesToClipboard(); 
} 

但它表明我LButton的組合|篩主要當我按下CTRL + C: enter image description here

P.S:已經安裝在Windows兩種語言,系統Win2012 R2

UPDATE1:感謝你評論!如果我登錄的動作,我看到:

e.KeyData:CONTROLKEY

e.KeyCode:CONTROLKEY

e.KeyData:C

e.KeyCode:C

但還是無法抓住這個按鍵順序。代碼:

 private void listviewLogger_KeyUp(object sender, KeyEventArgs e) 
     { 
      if (sender != listviewLogger) 
      { 
       return; 
      } 

      Logger("e.KeyData: " + e.KeyData); 
      Logger("e.KeyCode: " + e.KeyCode); 
     } 

UPDATE2:

解決這個樣子。不要問我怎麼:-D

if (((e.KeyData & Keys.ControlKey) != Keys.ControlKey) && e.KeyCode == Keys.C) 
    { 
     CopyLogEntriesToClipboard(); 
    } 

UPDATE3:

以前的作品爲KEYUP事件。對於的KeyDown第一代碼段工程

+1

那麼,你不能用這樣的斷點調試GUI代碼。它釋放了你的鼠標左鍵和換檔鍵。 –

回答

1

這是更好地趕下來的關鍵事件(我已經通過按住Ctrl + C和開關檢查它的編輯到另一個時沒有relesing按鈕)。 請再試一次您的第一個建築。這對我來說很有用!

private void listView1_KeyDown(object sender, KeyEventArgs e) 
    { 
     if (e.Control && e.KeyCode == Keys.C) 
     { 
      Text = "got it"; 
     } 
    } 
+0

是的你說得對!似乎是KeyUp的東西。我會更新fost –