在 KeyDown 事件中,我可以使用 KeyEventArgs。它具有(除其他外)以下三个属性:
e.KeyCode
e.KeyData
e.KeyValue
我应该使用哪一个?
编辑:不知何故,我误读了您的问题,包括检查有效字符。你修改了吗?我已经添加了每个的描述。
如果您只需要角色,我可能会建议使用 KeyPress 事件并使用KeyPressEventArgs。KeyChar属性。然后,您可以使用Char.IsLetterOrDigit()来确定它是否是有效字符。
或者,您可以将KeyEventArgs.KeyCode转换为 char,然后在其上使用 Char.IsLetterOrDigit。
我建议使用该KeyCode
属性来检查Keys
大多数操作的枚举。然而,下面的一些基本区别可能会帮助您更好地决定您需要哪一个来适应您的情况。
差异:
KeyCode
- 表示Keys
表示当前处于 Down 状态的键的枚举值。
KeyData
- 与 相同KeyCode
,只是它具有修饰符形式的附加信息 - Shift/Ctrl/Alt 等。
KeyValue
- 的数值KeyCode
。
非常基本的 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");
}
}
使用KeyPressed事件。
引用 MSDN:
KeyPressEventArgs 指定用户按下某个键时所组成的字符。例如,当用户按下 SHIFT + K 时,KeyChar 属性返回一个大写的 K。
这样你就不需要弄乱e.KeyCode
,
e.KeyData
和
e.KeyValue
。