如何从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();