如何为Windows窗体表单设置热键

问题描述 投票:15回答:8

我想在我的Windows窗体表单中设置热键。例如,Ctrl + N表示新表单,Ctrl + S表示保存。我该怎么做?

c# .net
8个回答
43
投票

myForm.KeyPreview = true;

KeyDown事件创建一个处理程序:

myForm.KeyDown += new KeyEventHandler(Form_KeyDown);

处理程序示例:

    // Hot keys handler
    void Form_KeyDown(object sender, KeyEventArgs e)
    {
        if (e.Control && e.KeyCode == Keys.S)       // Ctrl-S Save
        {
            // Do what you want here
            e.SuppressKeyPress = true;  // Stops other controls on the form receiving event.
        }
    }

5
投票

如果您的窗口有菜单,您可以使用ShortcutKeysSystem.Windows.Forms.ToolStripMenuItem属性:

myMenuItem.ShortcutKeys = Keys.Control | Keys.S;

在Visual Studio中,您也可以在菜单项的属性页中进行设置。


3
投票

您也可以在ProcessCmdKey派生类型中覆盖Form,如下所示:

protected override bool ProcessCmdKey(ref Message message, Keys keys)
{
    switch (keys)
    {
        case Keys.B | Keys.Control | Keys.Alt | Keys.Shift:
            // ... Process Shift+Ctrl+Alt+B ...

            return true; // signal that we've processed this key
    }

    // run base implementation
    return base.ProcessCmdKey(ref message, keys);
}

我相信它更适合热键。不需要KeyPreview


2
投票

我想要一个表格的KeyDown事件和一些像这样的代码:

private void Form1_KeyDown(object sender, KeyEventArgs e)
{
    if (e.KeyData == (Keys.Control | Keys.N))
    {
        CreateNew();
    }
}

2
投票

如果您尝试将它们链接到应用程序中的菜单项,那么您不需要任何代码。在菜单项上,您只需设置快捷键属性,它将运行您为菜单项单击配置的相同事件。


0
投票

如果需要,您也可以使用隐藏菜单进行设置。只需设置menu.visible = false的属性;


0
投票

首先,您需要处理KeyDown事件,然后您可以开始注意修改器:

private void Form1_KeyDown(object sender, System.Windows.Forms.KeyEventArgs e)
{
    if (Control.ModifierKeys == Keys.Control && e.KeyCode == Keys.S)
    {
        //Do whatever
    }
}

当然,您需要确保您的表单订阅了KeyDown事件。


0
投票

因为最新的答案是5岁,我想我会在这里做一个更新。具体解决有关菜单热键的问题部分,您可以通过设置MenuStrip.MenuItem属性来操纵ShortcutKeys对象的属性。在Visual Studio中,您可以通过打开MenuStrip对象的属性在表单设计窗口中执行此操作。向下滚动到ShortcutKeys属性后,您可以使用VS界面设置热键。

enter image description here

如果您希望MenuStrip为菜单项加下划线,请将&符号(&)char添加到所需热键的字符处。因此,例如,如果您希望Exit的“x”加下划线,则属性设置应为E&xit

enter image description here

这些属性操作应该产生类似于* * enter image description here的结果

*注意:要显示快捷键“Ctrl + N”,请将ShowShortcutKeys属性更改为true

© www.soinside.com 2019 - 2024. All rights reserved.