检测Ctrl + Enter

时间:2012-04-24 06:28:27

标签: c# wpf keystroke

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

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

显然这是不正确的,因为它不起作用。 任何人都可以帮助我,解释正确的方法应该是什么?

感谢名单

4 个答案:

答案 0 :(得分:13)

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

您需要处理使用KeyEventArgs的其中一个事件,在那里您会找到可帮助您检测组合的ControlModifiers等属性。

使用KeyPress的{​​{1}}事件没有足够的信息。


Drat,你说WPF不是你。看起来您需要KeyPressEventArgs

答案 1 :(得分:6)

我认为你需要一个SpecialKey Handler。 我用google搜索了一个解决方案here.

来自推荐链接的代码可以解决您的问题:

  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");
    }
}

答案 2 :(得分:3)

if (e.Modifiers == Keys.Control && e.KeyCode == Keys.Enter)

答案 3 :(得分:0)

   if (e.KeyChar == 10)
            {
             ///Code
            }

或者

 if ((Char)e.KeyChar == '\n')
            {
             ///Code
            }