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

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

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

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

 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();