如何从WPF KeyDown事件中获取普通字符?

Mal*_*olm 10 c# keyboard wpf events

我想要e.KeyWPF KeyDown事件中属性传递的ASCII字符.

小智 5

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

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


Ste*_*ins 4

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

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

TestLabel.Content = e.Key.ToString();
Run Code Online (Sandbox Code Playgroud)

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

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