繁体   English   中英

如何从 WPF KeyDown 事件中获取正常字符?

[英]How do I get the normal characters from a WPF KeyDown event?

我想要e.Key属性从 WPF KeyDown事件传递的 ASCII 字符。

您可以使用 TextInput 事件而不是 KeyDown 吗? TextCompositionEventArgs 类允许您直接检索通过 e.text 属性输入的文本

private void UserControl_TextInput(
    object sender, 
    System.Windows.Input.TextCompositionEventArgs e)
{
     var t = e.Text;
}

不幸的是,没有简单的方法可以做到这一点。 有两种解决方法,但它们都在某些条件下失败。

第一个是将其转换为字符串:

TestLabel.Content = e.Key.ToString();

这将为您提供 CapsLock 和 Shift 等功能,但是,对于字母数字键,它无法告诉您当时的换档状态等,因此您必须弄清楚这一点你自己。

第二种选择是改用 TextInput 事件,其中 e.Text 将包含输入的实际文本。 这将为您提供正确的字母数字键字符,但不会为您提供控制字符。

从您的简洁问题来看,我假设您需要一种方法来获取按键的 ASCII 值。 这应该工作

private void txtAttrName_KeyDown(object sender, KeyEventArgs e)
        {
            Console.WriteLine(e.Key.ToString());
            char parsedCharacter = ' ';
            if (Char.TryParse(e.Key.ToString(), out parsedCharacter))
            {
                Console.WriteLine((int) parsedCharacter);
            }
        }

例如,如果您按 Ctrl + S,您将看到以下输出。

LeftCtrl
S
83
System.Enum.ToObject(e.Key.GetType(), (byte)e.Key).ToString();

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM