2011-02-19 58 views

回答

36

​​

创建用于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. 
     } 
    } 
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事件。

2

我想一个KeyDown活动的形式和一些像这样的代码:

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

任何人都可以告诉我这是什么CreateNew()?它是一个内置函数吗? – Riya 2011-02-19 05:01:41

+0

@ riya7887:这只是一个例子。这不是一种内置的方法。你可以创建这样的方法,并把所有相关的代码放入。 – 2011-02-19 06:16:49

2

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

0

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

2

您还可以覆盖在你的Form派生类型ProcessCmdKey这样的:

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需要。

3

如果你的窗口有一个菜单,你可以使用的System.Windows.Forms.ToolStripMenuItemShortcutKeys属性:

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

在Visual Studio中,你可以将它设置菜单项的属性页,太多。