Sql 如何从113键值返回(F1)?

Sql 如何从113键值返回(F1)?,sql,visual-studio-2010,c#-4.0,onkeydown,Sql,Visual Studio 2010,C# 4.0,Onkeydown,当我按下F2键时,我表单中的以下代码keydown事件返回113 MessageBox.Show(e.KeyValue.ToString());//If pressed key is F2 ->113 但是当我想从下面的代码的KeyValue中获取Char时,它会返回“q” 如何从113 keyvalue到达F2?当您尝试获取字符值113时,之所以得到字母q,是因为它映射到ASCII值q 然后回答你剩下的问题 我在这里找到了这篇文章 有KeyUp、KeyDown和KeyPress事

当我按下F2键时,我表单中的以下代码keydown事件返回113

 MessageBox.Show(e.KeyValue.ToString());//If pressed key is F2 ->113
但是当我想从下面的代码的KeyValue中获取Char时,它会返回“q”


如何从113 keyvalue到达F2?

当您尝试获取字符值113时,之所以得到字母q,是因为它映射到ASCII值q

然后回答你剩下的问题

我在这里找到了这篇文章

有KeyUp、KeyDown和KeyPress事件。只有按键事件 提供字符代码。我不说ASCII,因为这个代码 取决于当前的语言设置;即使是一个代码也可以 按一系列键后生成。即使在 最简单的情况是英语语言设置没有1:1映射 在键和字符代码之间,例如,键A为“A”或 如果cpaslock打开或shift按下或 两个capslock的“a”都打开,按下shift键,等等。在那里,情况更糟 是不产生ASCII码的键-ctrl、alt、shift、F1、F2。, Fx、windows键等


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

作为对枚举的
KeyCode
强制转换


让我知道为什么按下F2键会显示返回113?我不是在编兄弟。。。F键没有ascii值,当您获取字符的int或尝试设置字符值时,它会映射到ascii图表above@AMR:帮我个忙,在家里试试:
Console.WriteLine(“{0}={1}”,Keys.F1,(Int32)Keys.F1)
使用System.Windows.Forms
)@BradChristie我不确定你想说明什么。很明显,Char映射到ASCII,不仅ASCII表不包含F键的def,而且113是'q',我是说113是q,但你不是在比较苹果和苹果。这成为问题的唯一原因是当您尝试直接强制转换到char时。然而,OP真正要处理的是键代码,因此提出ASCII表imho是没有意义的。因为我将值存储在db中,让用户自定义分配给每个功能的键。在这种情况下,我非常喜欢alex K的答案。使用密钥枚举。不要使用字符。函数键不是字符。你也需要关键的修饰语。if(keyData==(Keys.Control | Keys.F))
 MessageBox.Show(Char.ConvertFromUtf32(113));//return q
((Keys)e.KeyValue).ToString();