2011-11-29 54 views
1

我試圖在Windows窗體中的DataGridView控件中創建快捷方式(CTRL + J)。快捷方式應該簡單地按照向下箭頭所做的操作(即,在大多數情況下,將選擇更改爲下一項)。如何爲DataGridView創建自定義快捷鍵?

我想通過覆蓋窗體的FormKeyDown事件來處理CTRL + J,如果FormKeyDown接收到J鍵和Ctrl作爲修飾符,則使用SendKeys.SendWait("{DOWN}")

但是,當我發送{DOWN}密鑰時,由於用戶仍然按住CTRL鍵,它的行爲就像Ctrl + Down!

如何創建自定義快捷方式,使其具有與DataGridView已支持的快捷方式完全相同的行爲?

+2

爲什麼不創建'Ctrl + j'和'down'事件處理函數調用的單一方法? – StuperUser

回答

1

您應該避免依靠模仿SendKeys的用戶輸入,而是使用正確的API進行DataGridView課程的編程選擇。您可以檢查下頁的綱領性選擇部分:

Selection Modes in the Windows Forms DataGridView Control

在實現你需要採取在考慮SelectionMode配置爲您的數據網格視圖程序選擇的代碼。


或者你可以從DataGridView子類,並實現自定義的快捷鍵,使他們重定向到現有的。示例:

public class MyDataGridView : DataGridView 
{ 
    protected override bool ProcessCmdKey(ref Message msg, Keys keyData) 
    { 
     if (keyData == (Keys.Control | Keys.J)) 
     { 
      this.ProcessDownKey(Keys.Down); 

      return true; 
     } 

     return base.ProcessCmdKey(ref msg, keyData); 
    } 
}