2012-10-05 21 views
5

所以它很容易檢查,如果細胞已被點擊有:檢測CTRL +在同一個事件處理點擊的DataGridView細胞

 DataGridView.CellClicked += cellClickedHandler; 

而且它很容易檢查一個鍵被按下了:

 DataGridView.KeyDown += keyPressedHandler; 

我想知道如何將這兩個功能合併爲一個?我想在用戶控件單擊單元格時執行特定操作,並且據我所知,這些事件的操作處理程序是兩個獨特的獨立函數,傳遞給cellClickedHandler的參數不允許我獲取狀態鍵盤和任何按鍵可能會與鼠標點擊一起觸發。

+1

[相似的問題](http://stackoverflow.com/a/515118/292067)的答案應該可以幫到你。 – jswolf19

+0

我不知道控制類甚至存在,謝謝!我一次只使用這個可視C#的東西。我一直在進行大量的Google搜索,而且沒有提出類似於我的問題的查詢,所以希望現在人們可以用自己的指導來解決這個問題。謝謝! – anon58192932

回答

5
private void cellClicked(object sender, DataGridViewCellMouseEventArgs e) 
    { 
     if(e.Button == MouseButtons.Right) // right click 
     { 
      if (Control.ModifierKeys == Keys.Control) 
       System.Diagnostics.Debug.Print("CTRL + Right click!"); 
      else 
       System.Diagnostics.Debug.Print("Right click!"); 
     } 
     if (e.Button == MouseButtons.Left) // left click 
     { 
      if (Control.ModifierKeys == Keys.Control) 
       System.Diagnostics.Debug.Print("CTRL + Left click!"); 
      else 
       System.Diagnostics.Debug.Print("Left click!"); 
     } 
    } 
+0

感謝@ jswolf19對我指向正確的代碼 – anon58192932

+1

要小心,因爲你寫代碼的方式ctrl + shift + click,ctrl + alt + click和ctrl + shift + alt + click不會註冊。這可能是也可能不是你想要的行爲^ _^ – jswolf19

+0

正式注意,謝謝! – anon58192932