Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/262.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/opengl/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何在C#Windows窗体中使用数字键盘快捷键?_C# - Fatal编程技术网

如何在C#Windows窗体中使用数字键盘快捷键?

如何在C#Windows窗体中使用数字键盘快捷键?,c#,C#,因此,我想使用Ctrl加上数字键盘上的数字作为菜单项(或按钮)的快捷方式。但我似乎无法使用System.Windows.Forms.Shortcut 例如: this.menuItem3.Shortcut=System.Windows.Forms.Shortcut.Alt7; 将适用于非数字键盘7,但不适用于数字键盘7。我想指定它在num pad上工作(我不在乎它是否同时适用于两者)。在可视化设计器中,菜单项的属性中有一个选项允许这样做 属性是ShortcutKeys-数字键盘键是此属性下拉

因此,我想使用Ctrl加上数字键盘上的数字作为菜单项(或按钮)的快捷方式。但我似乎无法使用
System.Windows.Forms.Shortcut

例如:

this.menuItem3.Shortcut=System.Windows.Forms.Shortcut.Alt7;

将适用于非数字键盘7,但不适用于数字键盘7。我想指定它在num pad上工作(我不在乎它是否同时适用于两者)。

在可视化设计器中,菜单项的属性中有一个选项允许这样做

属性是ShortcutKeys-数字键盘键是此属性下拉列表中的选项

在代码隐藏中,设计器生成:

this.myToolStripMenuItem.ShortcutKeys = ((System.Windows.Forms.Keys)((System.Windows.Forms.Keys.Control | System.Windows.Forms.Keys.NumPad0)));
因此,如果需要,您可以轻松地从代码中设置它

需要注意的一点是,这只在Num Lock打开时起作用-我非常确定不可能为同一菜单项分配两个快捷键,因此如果您希望在Num Lock关闭和打开时都能起作用,那么您需要处理按键事件

你怎么能做到。下面是文章中的代码,并指定了Insert(因为这是与上面的NumPad0匹配的非Num Lock键)

protected override bool ProcessCmdKey(ref Message msg, Keys keyData)
{
    if (keyData == (Keys.Control | Keys.Insert))
    {
        // Call your menu item handler here
        return true;
    }
    return base.ProcessCmdKey(ref msg, keyData);
} 

在可视化设计器中,菜单项的属性中有一个选项允许此操作

属性是ShortcutKeys-数字键盘键是此属性下拉列表中的选项

在代码隐藏中,设计器生成:

this.myToolStripMenuItem.ShortcutKeys = ((System.Windows.Forms.Keys)((System.Windows.Forms.Keys.Control | System.Windows.Forms.Keys.NumPad0)));
因此,如果需要,您可以轻松地从代码中设置它

需要注意的一点是,这只在Num Lock打开时起作用-我非常确定不可能为同一菜单项分配两个快捷键,因此如果您希望在Num Lock关闭和打开时都能起作用,那么您需要处理按键事件

下面是文章中的代码,指定了Insert(因为这是与上面的NumPad0匹配的非Num Lock键)

protected override bool ProcessCmdKey(ref Message msg, Keys keyData)
{
    if (keyData == (Keys.Control | Keys.Insert))
    {
        // Call your menu item handler here
        return true;
    }
    return base.ProcessCmdKey(ref msg, keyData);
} 

谢谢你的回复大卫-我很感激。这是我期望我能做的事情,但是,我似乎做不到。我拥有的属性是你链接的帖子中展示的方法。这很好-尽管不是我想要的:D谢谢!!!谢谢你的回复大卫-我很感激。这就是这是我期望我能做的事情,但是,我似乎做不到。我的属性是你链接的帖子中展示的方法。这很好-尽管不是我想要的:D谢谢!!!