在KeyDown事件中,我有KeyEventArgs可以使用。它具有(除其他外)这三个属性:
e.KeyCode
e.KeyData
e.KeyValue
我应该使用哪一个?
答案 0 :(得分:12)
编辑:不知何故,我误读了您的问题,包括检查有效字符。你修改过了吗?我已经添加了每个的描述。
如果只需要该角色,我可能会建议您使用KeyPress事件并使用KeyPressEventArgs。KeyChar属性。然后,您可以使用Char.IsLetterOrDigit()来确定它是否是有效字符。
或者,您可以将KeyEventArgs.KeyCode转换为char,然后对其使用Char.IsLetterOrDigit。
答案 1 :(得分:1)
我建议使用KeyCode
属性来检查大多数操作的Keys
枚举。但是,下面的一些基本差异可能会帮助您更好地确定您的情况需要哪一个。
的差异:
KeyCode
- 表示Keys
枚举值,表示当前处于“关闭”状态的键。
KeyData
- 与KeyCode
相同,但它具有修饰符形式的附加信息 - Shift / Ctrl / Alt等。
KeyValue
- KeyCode
的数值。
答案 2 :(得分:0)
非常基本的使用KeyDown
private void tbSomeText_KeyDown (object sender, KeyEventArgs e)
{
if (e.KeyCode == Keys.B && e.Modifiers != Keys.Shift) {
MessageBox.Show("You Pressed b");
}
else if (e.KeyCode == Keys.A && e.Modifiers == Keys.Shift) {
MessageBox.Show("You Pressed Shift+A");
}
}
答案 3 :(得分:0)
使用KeyPressed事件。
引用MSDN:
KeyPressEventArgs指定用户按下键时组成的字符。例如,当用户按下SHIFT + K时,KeyChar属性返回一个大写的K。
这样你就不需要弄乱e.KeyCode
,
e.KeyData
和
e.KeyValue
。