检测Ctrl + Enter

Dan*_*986 7 c# wpf keystroke

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

if (e.Key == Key.Return && (e.Key == Key.LeftCtrl || e.Key == Key.RightCtrl))
 {
   //Do Something            
 }
Run Code Online (Sandbox Code Playgroud)

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

感谢名单

Ben*_*igt 14

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

您需要处理其中一个使用的事件KeyEventArgs,在那里您将找到诸如此类的属性Control,Modifiers这将有助于您检测组合.

使用的KeyPress事件,KeyPressEventArgs没有足够的信息.


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


Pan*_*ank 7

我认为你需要一个SpecialKey Handler.我在google上搜索了一个解决方案.

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

  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");
    }
}
Run Code Online (Sandbox Code Playgroud)