使用下面的代码,左右箭头键按预期工作,但向上和向下箭头无法识别(单步执行,前两个条件在适当的情况下满足,但后两个条件永远不会):
private void textBox1_KeyDown(object sender, KeyEventArgs e) {
TextBox tb = (TextBox)sender;
if (e.KeyCode.Equals(Keys.Left)) {
SetFocusOneColumnBack(tb.Name);
e.Handled = true;
return;
}
if (e.KeyCode.Equals(Keys.Right)) {
SetFocusOneColumnForward(tb.Name);
e.Handled = true;
return;
}
if (e.KeyCode.Equals(Keys.Up)) {
SetFocusOneRowUp(tb.Name);
e.Handled = true;
return;
}
if (e.KeyCode.Equals(Keys.Down)) {
SetFocusOneRowDown(tb.Name);
e.Handled = true;
return;
}
}
为什么会这样,我该如何解决?
更新
这是我在单步执行时将鼠标悬停在 e.Keycode 上时看到的内容。如果我按下
- ...左箭头键,我看到了:
e.KeyCode = "LButton | MButton | Space"
- ...右箭头键,我看到了:
e.KeyCode = "LButton | RButton | MButton | Space"
- ...向上箭头键,我看到:
e.KeyCode = "RButton | MButton | Space"
- ...向下箭头键,我看到:
e.KeyCode = "Backspace | Space"
这让我感到困惑(它向我展示了什么),但是在 keyleft 和 keyright 上,我的代码被输入了 - 无论我多么努力地咬紧牙关,它都不会用于 keyup 和 keydown。