2

我如何获得使用 PreviewKeyDownEvent 按下的键。是的,有 KeyEventArgs 返回被按下的键。但我面临的问题是,我无法区分大小写字符

我需要检查此人是否按下了 a 或 A 或任何其他区分大小写的字符

谢谢

4

3 回答 3

6

如果PreviewKeyDown没有直接的方法来获取使用KeyEventArgs. 您可以尝试使用PreviewTextInput将给出在属性中输入的实际字符的事件。TexCompositionEventArgs Text

于 2013-08-29T16:07:37.493 回答
1

您需要获取密钥的 ASCII 码

此处的 VB 示例 - Google 上的许多其他示例

更好的例子在这里

于 2013-08-29T15:27:31.530 回答
0

基本上,您将 的值KeyEventArgs.Key与您想要的任何键进行比较:

private void PreviewKeyDownHandler(object sender, KeyEventArgs e)
{
    if (e.Key == Key.A) DoSomething();
}

如果您想知道是否按下了大写字母,则需要检查该SHIFT键是否也被按下:

private void PreviewKeyDownHandler(object sender, KeyEventArgs e)
{
    if (e.Key == Key.A && Keyboard.Modifiers == ModifierKeys.Shift) DoSomething();
}

更新>>>

如果您还需要检测Caps Lock按钮是否被按下,您可以检查这种情况:

if (Keyboard.GetKeyStates(Key.CapsLock) == KeyStates.Toggled) 
{
    if (e.Key == Key.A) DoSomething();
}
于 2013-08-29T16:04:32.327 回答