1

当我按 F2 然后在我的表单 keydown 事件中遵循代码返回 113

 MessageBox.Show(e.KeyValue.ToString());//If pressed key is F2 ->113

但是当我想从下面的代码中获取 KeyValue 中的 Char 时,它会返回“q”

 MessageBox.Show(Char.ConvertFromUtf32(113));//return q

如何从 113 keyvalue 到达 F2 ?

4

3 回答 3

2

作为枚举的KeyCode演员?Keys

((Keys)e.KeyValue).ToString();
于 2013-08-27T13:19:42.637 回答
0

通常,功能键实际上不是字符。通常,它们被映射为组合键,例如 (0, 113)。为什么要 F2 的字符代码?

于 2013-08-27T13:19:36.127 回答
0

当您尝试获取 char 值 113 时得到字母 q 的原因是因为它映射到 q 的 ASCII 值

在此处输入图像描述

并回答你剩下的问题

Windows 键盘键的 ascii 代码和功能键 (F1 - F12) 和其他键(如 shift、capslock、backspace、ctrl 等)的代码

我在这里找到这篇文章http://bytes.com/topic/c-sharp/answers/429451-keycode-keyvalue-keydata

有 KeyUp、KeyDown 和 KeyPress 事件。只有 KeyPress 事件提供字符代码。我没有说 ASCII,因为此代码取决于当前的语言设置;甚至可以通过按下一系列键来生成一个代码。即使在使用英语语言设置的最简单情况下,键和字符代码之间也没有 1:1 映射,例如键 A 为“a”生成 ASCII,或者如果 cpaslock 开启或按下 shift 或“a”,键 A 为“A”生成 ASCII ' 两个大写锁定都打开并按下 shift 等。甚至还有不产生 ASCII 代码的键 - ctrl、alt、shift、F1、F2.、Fx、Windows 键等

于 2013-08-27T13:19:08.673 回答