将Keys.Inter转换为Compact Framework中的char

时间:2010-05-20 20:01:09

标签: c# compact-framework

我需要将Keys.Enter转换为字符。

这在紧凑框架中不起作用:Convert sequence of System.Windows.Forms.Keys to a Char(KeyInterop.VirtualKeyFromKey)

任何人都有其他想法吗?


进一步澄清: 我喜欢使用枚举而不是魔术数字/字符。而不是使我自己的枚举说MyKeys.Enter(等于'\ r \ n')我想使用MS所做的。

Keys.Enter只是一个例子。


我打算这样做来比较KeyPressEventArgs.KeyChar。这就是我试图与char进行比较的原因。

2 个答案:

答案 0 :(得分:1)

Keys枚举中的键是虚拟键。在Windows使用当前活动的键盘布局翻译它们之前,它们不会变成字符。根据用户的偏好和语言,哪个细节因机器而异。很可能是您的软件运行的特定类型的移动设备。此外,许多虚拟键不会产生字符,Keys.F1就是一个明显的例子。

自己将虚拟键转换为字符是真正避免的,你会弄错它。 Keys.Enter已由Windows翻译,它将生成带有e.KeyChar ='\ r'的KeyPressed事件。无论如何,在大多数机器上。

如果要检测快捷键,则使用KeyDown。输入产生字符的键需要KeyPressed。

答案 1 :(得分:0)

如果输入文本字段,

Keys.Enter"\r\n"

您应该能够首先获取Keys值,按位并使用Keys.KeyCode获取字符,然后转换为uint以获取虚拟键代码。然后将其传递给MapVirtualKey以将其转换为字符。