2010-05-20 29 views
0

我需要将Keys.Enter转换为字符。将Keys.Enter转换为精简框架中的字符

这并不紧凑框架工作:Convert sequence of System.Windows.Forms.Keys to a Char(KeyInterop.VirtualKeyFromKey)

任何一个有任何其他的想法?


进一步澄清: 我喜欢用比幻数/字符更枚举。而不是让我自己的MyKeys.Enter枚举(即等于'\ r \ n'),我想只使用MS所做的。

Keys.Enter只是一个例子。


我打算这样做来比较KeyPressEventArgs.KeyChar。这就是为什么我试图比较一个字符。

回答

0

Keys.Enter"\r\n"如果输入到文本字段中。

您应该能够采取先在Keys值,按位与Keys.KeyCode AND'ing的它,并强制转换为uint获得虚拟键代码来获得字符。然后将它传递给MapVirtualKey将其转换为字符。

+0

除了那是两个字符。 – 2010-05-20 20:18:18

+0

@Michael:这是因为Enter实际上并不代表一个角色。删除,结束,上传,F1-F12,Shift,... – 2010-05-20 20:20:48

+0

也不知道(我熟悉键盘扫描代码),但仍然存在OP试图将按键表示为单个字符的问题。我们不知道为什么(除非他们解释),但也许一个字符是必要的。 – 2010-05-20 20:24:36

1

Keys枚举中的键是虚拟键。使用当前活动的键盘布局,它们不会在Windows转换它们之前变成字符。根据用户的喜好和语言,每台机器的细节会有所不同。很可能是您的软件运行在特定类型的移动设备上。此外,许多虚拟键不会产生一个字符,Keys.F1将是一个明显的例子。

将虚拟键转换为字符本身就是你应该避免的,你会错误的做到这一点。 Keys.Enter已经由Windows翻译,它将使用e.KeyChar ='\ r'生成KeyPressed事件。无论如何,在大多数机器上。

如果你想检测快捷键,那么你使用KeyDown。键入产生字符的键需要KeyPressed。

+0

另请参阅http://stackoverflow.com/questions/5113567/get-virtual-key-code-for-char/5113632#5113632 ... – Konerak 2011-03-03 07:30:19