在不同的机器上,在OnKeyDown
覆盖中,e.Key
值不一定一致。例如,在我在 Boot Camp 下运行 Win7-64 的 Mac 上,反斜杠键被报告为Key.OemQuote
而不是Key.OemBackslash
预期的那样,考虑到它甚至不在同一个键上,这毫无意义。在同事的戴尔上,它被报告为完全不同的东西。
但是,在这两种情况下,正确的反斜杠字符都会在键入时出现在文本框中,因此操作系统显然以某种方式知道该键与哪个字符相关联。
我们正在尝试确定,给定特定系统上的键码,您是否可以获得该键所代表的相应字符(如果有)(假设没有按下任何修饰符。)
注意:我已经知道处理输入字符的事件OnPreviewTextInput
和事件,但这不是我要问的。OnTextInput
我特别询问一个函数,它以 KeyCode 作为参数并返回如果按下该键将在屏幕上显示的字符。
例如,在我的机器上,该函数将采用Key.OemQuote
并返回反斜杠字符。传入Key.Control
将返回null
(因为单独按下 Control 时实际上没有出现任何内容。)
注意:我提出了另一个关于处理不同键码的问题,具体可能看起来类似于这个问题,但这是一个非常具体的单独问题,与采用此类代码并返回字符的函数有关,所以请执行不要将此标记为重复。它不是。