2011-02-08 70 views
2

我想检测用户在.net 4 WPF KeyDown事件处理程序中按下“添加”键。要做到这一点我用下面的测试:检测Shift + 1为Key.Add

if (e.Key == Key.Add) 

当用户按下Shift键+ 1(相当于在我的键盘布局“添加”)这不检测的情况。
我该如何检测?我不相信测试

if (e.Key == Key.D1 && Keyboard.Modifiers == ModifierKeys.Shift) 

是正确的解决方案,因为它可能映射到另一个键盘布局的其他地方。

有什么建议吗?

+2

您是否试过`Key.OemPlus`? – 2011-02-08 21:16:24

+0

是的,我按了Shift + 1,没有按下按钮。 – Marc 2011-02-08 22:55:39

回答

0

您可能会考虑使用KeyPress事件处理程序。

0
private void trackBarFrames_KeyDown(object sender, KeyEventArgs e) 
{ 
    switch (e.KeyCode) 
    { 
     case Keys.Add : 
      // Nummeric Keypad Add 
      AddSomething(); 
      break; 
     case Keys.Oemplus : 
      // Regular keyboard Add 
      // OemPlus is assigned to the regular keyboard key with a "Add" Sign but doesn not take shift conditions in account..! 
      if (e.Modifiers == Keys.Shift) 
      { 
       AddSomething(); 
      } 
      break; 
    } 
}