Winforms 有没有办法用键盘快捷键选中或取消选中WinForm复选框?

Winforms 有没有办法用键盘快捷键选中或取消选中WinForm复选框?,winforms,Winforms,我需要在WinForm复选框中设置键盘快捷键。用于选中或取消选中 我不知道这有什么可能 但在箭头键和空格键的帮助下,这是可以做到的 我的要求如下 Alt + C - Checked Alt + U - Un checked. 是否存在任何可能性?您可以手动检查表单keydown中所需的组合键,如假设C:- 你应该尝试一些其他的组合键,因为Cody Gray提到的保留键盘助记符 private void Form1_KeyDown(object sender, KeyEventArgs e) {

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

我不知道这有什么可能

但在箭头键和空格键的帮助下,这是可以做到的

我的要求如下

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

是否存在任何可能性?

您可以手动检查表单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;

    } 
}

Check属性以获取或设置一个值,该值指示窗体在将事件传递给具有焦点的控件之前是否接收键事件。

您可以在窗体keydown中手动检查所需的键组合,如下所示: 你应该尝试一些其他的组合键,因为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;

    } 
}

选中属性以获取或设置一个值,该值指示窗体在将事件传递给具有焦点的控件之前是否将接收键事件。

如果不介意将要用于快捷方式的键包含在复选框文本中,则可以使用助记符

确保复选框中的UseMemonic设置为true,我认为这是默认设置 在复选框的文本中输入您要使用的键,该复选框的前缀为一个符号,例如,&Check
…然后,当按下alt键时,该键将在文本中显示下划线,按下助记符键将交替选中和取消选中该复选框。

您可以使用助记符来执行此操作…如果您不介意将要用于快捷方式的键包含在复选框文本中

确保复选框中的UseMemonic设置为true,我认为这是默认设置 在复选框的文本中输入您要使用的键,该复选框的前缀为一个符号,例如,&Check
…然后,当按下alt键时,该键将在文本中显示下划线,按下助记符键将交替选中和取消选中复选框。

您可以通过覆盖表单控件的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

可以通过重写表单控件的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

此事件在我的项目中不起作用。有什么规矩吗?。或者错过了什么。谢谢。+1的快速回答和正确的回答。哦,我找到了名为“按键预览”的适当方法。你也可以尝试表单的按键活动。。哦,太好了,让我编辑我的答案。。!!此事件在我的项目中不起作用。有什么规矩吗?。或者错过了什么。谢谢。+1的快速回答和正确的回答。哦,我找到了名为“按键预览”的适当方法。你也可以尝试表单的按键活动。。哦,太好了,让我编辑我的答案。。!!不应使用Alt键执行此操作。这是为键盘助记符保留的。好的,朋友。我只使用c和u按钮。还有一件事是什么是助记符?你不应该用Alt键来做这件事。这是为键盘助记符保留的。好的,朋友。我只使用c和u按钮。还有一件事什么是记忆法?可能是