我需要将Keys.Enter
转换为字符。
这在紧凑框架中不起作用:Convert sequence of System.Windows.Forms.Keys to a Char(KeyInterop.VirtualKeyFromKey)
任何人都有其他想法吗?
进一步澄清: 我喜欢使用枚举而不是魔术数字/字符。而不是使我自己的枚举说MyKeys.Enter(等于'\ r \ n')我想使用MS所做的。
Keys.Enter只是一个例子。
我打算这样做来比较KeyPressEventArgs.KeyChar。这就是我试图与char进行比较的原因。
答案 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以将其转换为字符。