有没有办法检查或取消选中带键盘快捷键的WinForm复选框?

时间:2011-08-02 07:27:18

标签: winforms

我需要在WinForm中设置键盘快捷键复选框。用于检查或取消选中。

我不知道这种可能性,。

但是借助箭头键和空格键的帮助,可以完成。

我的要求就像下面,..

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

是否存在任何可能性?。

3 个答案:

答案 0 :(得分: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 :(得分:1)

您可以使用助记符...(如果您不介意在复选框的文本中包含要用于快捷方式的键)。

  • 确保checkBox上的UseMnemonic设置为true(我认为这是默认设置)
  • 将要使用的密钥放在前缀为&符号的复选框文本中(例如& Check)

...然后当按下alt键时,按键将在文本中显示为带下划线。按下助记键将交替检查&取消选中该复选框。

答案 2 :(得分: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