从Key获取Char

Jes*_*ndo 19 c# wpf text-editor keydown

我正在编写自定义文本编辑器,我使用KeyDown和KeyUp事件.该事件从包含"Key"实例的参数获取KeyEventArgs.

我怎样才能将"钥匙"变成真正的焦炭?

使用Key.ToString()和"." 我得到一个"OmePeriod"或","我得到一个"OmeComma".我可以直接转换这些值...但这是一项艰苦的工作,我确信必须存在任何将Key转换为真正的"char"的类.

谢谢!

问候.

Vde*_*edT 5

这里的主要问题是您捕获的事件是滚轴键盘事件,并且该键确实是键而不是字符。在两者之间是键盘映射!例如,键入shift-A时,您将收到两个事件,而不是按键事件。

这次讨论可以帮助您:C#如何将虚拟键码转换为char?


mar*_*etz 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);
}
Run Code Online (Sandbox Code Playgroud)

请注意,这仅捕获第一个字节,并且不适用于国际(Unicode)文本。也可能不适用于更复杂的文本输入事件,因此请注意!

有关更多信息,请参见此MSDN文章


归档时间:

查看次数:

52605 次

最近记录:

8 年,9 月 前