7

(使用 WPF)我尝试检测Ctrl+何时Enter被击中。所以我尝试了这段代码:

if (e.Key == Key.Return && (e.Key == Key.LeftCtrl || e.Key == Key.RightCtrl))
 {
   //Do Something            
 }

显然这是不正确的,因为它不起作用。谁能帮助我,解释正确的方法应该是什么?

谢谢

4

4 回答 4

15

显然e.Key在同一事件中不能等于多个不同的值。

您需要处理使用 的事件之一,在KeyEventArgs那里您会找到诸如Control和之类的属性,Modifiers这将帮助您检测组合。

使用 的KeyPress事件KeyPressEventArgs只是没有足够的信息。


Drat,你说WPF不是你。看起来你需要e.KeyboardDevice.Modifiers.

于 2012-04-24T06:31:50.207 回答
8

我认为您需要一个 SpecialKey 处理程序。我用谷歌搜索了一下,在这里找到了解决方案

以下来自引用链接的代码可能会解决您的问题:

  void SpecialKeyHandler(object sender, KeyEventArgs e)
{
    // Ctrl + N
    if ((Keyboard.Modifiers == ModifierKeys.Control) && (e.Key == Key.N))
    {
        MessageBox.Show("New");
    }

    // Ctrl + O
    if ((Keyboard.Modifiers == ModifierKeys.Control) && (e.Key == Key.O))
    {
        MessageBox.Show("Open");
    }

    // Ctrl + S
    if ((Keyboard.Modifiers == ModifierKeys.Control) && (e.Key == Key.S))
    {
        MessageBox.Show("Save");
    }

    // Ctrl + Alt + I
    if ((Keyboard.Modifiers == (ModifierKeys.Alt | ModifierKeys.Control)) && (e.Key == Key.I))
    {
        MessageBox.Show("Ctrl + Alt + I");
    }
}
于 2012-04-24T06:55:04.443 回答
4
if (e.Modifiers == Keys.Control && e.KeyCode == Keys.Enter)
于 2015-02-15T02:03:13.313 回答
-1
   if (e.KeyChar == 10)
            {
             ///Code
            }

或者

 if ((Char)e.KeyChar == '\n')
            {
             ///Code
            }
于 2014-07-03T14:06:47.773 回答