2011-02-08 52 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; 
    } 
} 
相關問題