2

在不同的机器上,在OnKeyDown覆盖中,e.Key值不一定一致。例如,在我在 Boot Camp 下运行 Win7-64 的 Mac 上,反斜杠键被报告为Key.OemQuote而不是Key.OemBackslash预期的那样,考虑到它甚至不在同一个键上,这毫无意义。在同事的戴尔上,它被报告为完全不同的东西。

但是,在这两种情况下,正确的反斜杠字符都会在键入时出现在文本框中,因此操作系统显然以某种方式知道该键与哪个字符相关联。

我们正在尝试确定,给定特定系统上的键码,您是否可以获得该键所代表的相应字符(如果有)(假设没有按下任何修饰符。)

注意:我已经知道处理输入字符的事件OnPreviewTextInput和事件,但这不是我要问的。OnTextInput

特别询问一个函数,它以 KeyCode 作为参数并返回如果按下该键将在屏幕上显示的字符。

例如,在我的机器上,该函数将采用Key.OemQuote并返回反斜杠字符。传入Key.Control将返回null(因为单独按下 Control 时实际上没有出现任何内容。)

注意:我提出了另一个关于处理不同键码的问题,具体可能看起来类似于这个问题,但这是一个非常具体的单独问题,与采用此类代码并返回字符的函数有关,所以请执行不要将此标记为重复。它不是。

4

1 回答 1

0

我认为这个线程中的答案适用。

另请查看MapVirtualKey PInvoke

于 2012-10-24T22:55:04.713 回答