保存keydown的输出

时间:2012-10-29 15:53:46

标签: c#-4.0 silverlight-4.0

我抓住了这个事件,但我需要保存点击的按钮。

例如获取修饰符的方法+ e.key

这是我的代码:

protected override void OnKeyDown(KeyEventArgs e)
        {       
            //base.OnKeyDown(e);
            if (Keyboard.Modifiers == ModifierKeys.Control && e.Key == Key.E)
            {
                MessageBox.Show(test.ToString());
            }    
        }

我尝试组合两个键,如

 Key test = Key.Ctrl | e.Key ;

但它总是给出错误的结果,例如由于上面的代码导致Ctrl + E导致J

我想保存它,我想在所有UserControls中使这些快捷方式通用。

2 个答案:

答案 0 :(得分:1)

使用KeyGesture尝试这样做:

private void textBox1_KeyDown(object sender, KeyEventArgs e)
{
    if(e.Key ==Key.E && e.KeyboardDevice.Modifiers==ModifierKeys.Control)
    {
        KeyGesture keyGesture = new KeyGesture(e.Key, e.KeyboardDevice.Modifiers);
        if (keyGesture.Matches(null, e))
        {
            //This should match!
        }
    }
}

答案 1 :(得分:0)

好吧,因为我使用silverlight4,我将使用

Tuple<ModifierKeys, Key> 

效果很好,性能很好