如何检测WPF中是否按下了哈希键(#)?

时间:2016-08-20 13:28:57

标签: wpf

我正在我的PreviewKeyDown事件中尝试此代码来检测是否按下了散列键(#),但它仍然在我的TextBox和MessageBox中显示数字(3): -

    private void text_PreviewKeyDown(object sender, KeyEventArgs e)
    {
        if (e.Key == Key.D3 && Keyboard.Modifiers == ModifierKeys.Shift)
            MessageBox.Show(e.Key.ToString());
    }

如何修改或更改此代码以执行我需要的操作?
感谢。

1 个答案:

答案 0 :(得分:0)

As an Administrator会捕获最后一个按下的键KeyDown,因此您会在输出中看到Key.D3。这是预期的行为。 为什么要使用3?如果您想要查看正在按下哪个键,这是有意义的,但您事先明确检查 SHIFT + 3 组合,所以您已经知道你是什么后。

e.Key.ToString()

此外,作为评论中的@keyboardP noted,键盘上// slightly modified your check if (e.Key == Key.D3 && (Keyboard.Modifiers & ModifierKeys.Shift) == ModifierKeys.Shift) { MessageBox.Show("SHIFT+3 combo pressed"); } 符号的位置取决于键盘本身的布局(美国/英国等),或者您配置的位置你的操作系统。也许您可以将键盘布局的检查添加到混合中(可能值得查看#命名空间中的InputLanguageManager类。

编辑:作为替代方案,为什么不跟踪文本框中是否输入了System.Windows.Input字符,而不是检查键盘组合?对我来说似乎更直接,但这取决于你的要求。