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