我正在编写自定义文本编辑器,我使用KeyDown和KeyUp事件。该事件从包含“Key”实例的参数中获取KeyEventArgs。
如何将“Key”转换为真正的char?
将Key.ToString()与“。”一起使用。我得到一个“OmePeriod”或“,”我得到一个“OmeComma”。我可以直接转换这些值...但这是一项艰苦的工作,我确信必须存在任何将Key转换为真正的“char”的类。
谢谢!
问候。
答案 0 :(得分:5)
这里的主要问题是你捕获的事件是卷轴键盘事件,而键确实是键而不是字符。中间是键盘图!例如,当键入shift-A时,您将收到两个事件,而不是一个用于按键的事件。
答案 1 :(得分:5)
请尝试使用KeyDown
事件,而不是使用TextInput
事件。附加一个如下所示的事件处理程序:
private void Grid_TextInput(object sender, TextCompositionEventArgs e)
{
Char keyChar = (Char)System.Text.Encoding.ASCII.GetBytes(e.Text)[0];
Debug.WriteLine(keyChar);
}
注意,这只抓取第一个字节,这对国际(Unicode)文本不起作用。它也可能不适用于更复杂的文本输入事件,所以请注意!
有关详情,请参阅this MSDN article。
答案 2 :(得分:3)
这可以为您提供所需的内容......也就是键盘代码中的区域设置特定字符...
how to capture the '#' character on different locale keyboards in WPF/C#?
答案 3 :(得分:0)
使用KeyEventArgs.Key属性和以下内容:How to convert a character in to equivalent System.Windows.Input.Key Enum value,而是使用以下内容:KeyInterop.VirtualKeyFromKey Method
答案 4 :(得分:-4)
将e.KeyValue转换为char。例如:
例如
private void myTextBox_KeyDown(object sender, KeyEventArgs e)
{
char pressedCharacter = (char)e.KeyValue;
}