我正在尝试使用按键,将其转换为字符串,然后将字符串转换回其原始的keypress int值。
假设我有这个:
KeysConverter kc = new KeysConverter();
string keyChar = kc.ConvertToString((System.Windows.Forms.Keys)e.KeyCode);
int key = (int)e.KeyCode;
Debug.WriteLine( e.KeyCode + " " + (int)e.KeyCode);
Key tempkey;
Enum.TryParse(keyChar, out tempkey );
Debug.WriteLine( tempkey + " " + (int)tempkey );
一切似乎都很好。例如:
测试用例:F5
输出:
F5 116
F5 116
测试用例:`(Oemtilde)
输出:Oemtilde 192
Oemtilde 192
测试用例:X
输出:
X 88
X 88
似乎没事......
然后我这样做:
测试用例:1
输出:D1 49
Lbutton 1
为什么某些键无法转换回原始值?
它无法使用的可注意键:
1,2,3,...,9,0,插入,删除,向下翻页,Page Up
编辑:
测试用例:1
(在键盘右侧的键盘上)
输出:NumPad1 97
NumPad1 97
答案 0 :(得分:1)
您的代码存在根本错误。 KeysConverter
将密钥转换为字符串,因此Keys.D1
(顶行上1
键的代码)转换为字符串“1”,因为密钥代表的是。 Enum.TryParse
尝试理解这一点,但没有Keys.1
标记(显然),所以它只是将字符串转换为数值“1”。 (Keys) 1
确实是Keys.LButton
。
我不确定您通过此往返转换尝试实现的目标,因此我不知道如何更正您的代码,但这解释了您所看到的内容。