2011-08-02 20 views
1

我需要在WinForm複選框中設置鍵盤快捷鍵。用於檢查或取消選中。是否有任何方法來檢查或取消選中鍵盤快捷方式的WinForm複選框?

我不知道這個可能性。

但在箭頭鍵和空格鍵的幫助下可以完成。

我的要求是像下面,..

Alt + C - Checked 
Alt + U - Un checked. 

任何可能性是存在?

+0

您不應該使用Alt鍵執行此操作。這是保留鍵盤助記符。 –

+0

好的朋友。我只使用c和u按鈕。另一件事什麼是助記符? – Sagotharan

+1

可能重複的[在WinForms實現鍵盤快捷方式的最佳方式?](http://stackoverflow.com/questions/400113/best-way-to-implement-keyboard-shortcuts-in-winforms) –

回答

3

您可以手動檢查表格keydown中所需的組合鍵(假設C#): - 您應該嘗試一些其他鍵組合,因爲Cody Gray提到的保留鍵盤助記符。

private void Form1_KeyDown(object sender, KeyEventArgs e) 
{ 
    // When the user presses both the 'Alt' key and 'C' key, 
    if (e.Alt && e.KeyCode.ToString() == "C") 
    { 

     //check the checkbox 
     this.checkBox1.Checked= true; 

    } 

    // When the user presses both the 'Alt' key and 'U' key, 
    if (e.Alt && e.KeyCode.ToString() == "U") 
    { 

     //Uncheck the checkbox 
     this.checkBox1.Checked= false; 

    } 
} 

檢查Form.KeyPress屬性來獲取或設置指示事件被傳遞給具有焦點的控制之前的形式是否會接收按鍵事件的值。

+1

這事件在我的項目中不起火。是否設置任何禮儀?或者錯過任何東西。謝謝。 – Sagotharan

+1

+ 1快速回答及其正確回答。 – Sagotharan

+1

哦,我發現禮物命名的關鍵預覽。 – Sagotharan

1

您可以使用助記符來執行...(如果您不介意在複選框的文本中包含要用於該快捷鍵的密鑰)。

  • 確保UseMnemonic設置爲true你的複選框(我認爲這是默認的)
  • 將要在複選框的前面加上一個&前綴文本使用密鑰(例如,&檢查)

...然後將匙顯示下劃線的文本時alt鍵被按下&按下記憶鍵都可以選擇檢查&取消選中該複選框。

0

您可以通過覆蓋表單控件的processCmdKey來實現此目的。您可以通過這種方式設置所有快捷鍵。請檢查下面的代碼(VB.NET):

Protected Overrides Function ProcessCmdKey(ByRef msg As System.Windows.Forms.Message, keyData As System.Windows.Forms.Keys) As Boolean 
    If keyData = Keys.N Then 
     ''call a method that check or uncheck the control 
    End If 
    ''you can even combine modifiers keys 
    If keyData =keys.Control + Keys.T Then 
     ''do something 
    End If 

    Return MyBase.ProcessCmdKey(msg, keyData) 
End Function 
相關問題