Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/wpf/13.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何在WPF中获取PreviewKeyDownEvent中输入的密钥_Wpf - Fatal编程技术网

如何在WPF中获取PreviewKeyDownEvent中输入的密钥

如何在WPF中获取PreviewKeyDownEvent中输入的密钥,wpf,Wpf,如何获取该键,一个使用PreviewKeyDownEvent按下的键。是,有KeyEventArgs返回按下的键。但我面临的问题是,我无法区分大小写字符 我需要检查此人是否按了a或a或任何其他与案例不同的字符 谢谢您需要获取密钥的ASCII码 基本上,您可以将KeyEventArgs.Key的值与所需的任何键进行比较: private void PreviewKeyDownHandler(object sender, KeyEventArgs e) { if (e.Key == Key

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

我需要检查此人是否按了a或a或任何其他与案例不同的字符


谢谢

您需要获取密钥的ASCII码


基本上,您可以将
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();
}

在这种情况下,没有一种直接的方法来获取使用中给出的字符输入的大小写。您可以尝试使用事件,该事件将给出在属性中输入的实际字符。

如果caps lock处于打开状态,您建议如何处理它?我之所以这样说,是因为一旦CapLock处于关闭状态,它将反转shift键的功能,加上大写字母是它关闭时的默认值。可能不是处理此问题的一般方法。这很有趣。。。我还以为我们只是否决了偏离主题的帖子,或者提供了错误的信息或糟糕的建议虽然我承认我的答案可能不是最好的答案,但它仍然为问题作者解决问题提供了一种有效的方法。-1有一种方法可以检测输入字符的大小写。@Sheridan我说没有直接的方法使用eventargs中给出的内容,我没有说没有任何方法。你的路不直。哦,请。。。如果检查条件
Keyboard.Modifiers==ModifierKeys.Shift
不是直接的,那么我不知道是什么。不管怎样,我支持我的反对票,因为你接着不必要地建议使用完全不同的事件。。。我相信你在这里已经给出了很多很好的答案,但是面对现实,这个答案并不好。@Sheridan如果OP想知道使用你的方法输入的字符是否是大写字母,你必须首先检查大写字母锁是否打开,然后检查是否在大写字母锁键的两种状态下按下shift键,然后处理逻辑以确定当前键是什么。我只是觉得使用一个事件会让你更容易得到实际的压力。但不管你的意见是什么我没有想到这一点,我接受你的观点。因此,我取消了我的反对票。