检测Shift + 1为Key.Add

时间:2011-02-08 21:07:12

标签: c# .net wpf input

我想检测用户在.net 4 WPF KeyDown事件处理程序中按“添加”键。为此,我使用以下测试:

if (e.Key == Key.Add)

当用户按下Shift + 1(对应于我的键盘布局上的“添加”)时,这不会检测到这种情况。
我怎么能发现这个?我不相信测试

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

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

有什么建议吗?

2 个答案:

答案 0 :(得分:0)

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

答案 1 :(得分: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;
    }
}