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; }}
为什么会这样,我该如何解决?
UPDATE
这是我在踩过e.Keycode时看到的内容.如果我按下
> …左箭头键,我看:e.KeyCode =“Lbutton | Mbutton | Space”
> …右箭头键,我看:e.KeyCode =“Lbutton | Rbutton | Mbutton | Space”
> …向上箭头键,我看:e.KeyCode =“Rbutton | Mbutton | Space”
> …向下箭头键,我看到:e.KeyCode =“Backspace | Space”
这让我感到困惑(它向我展示的是什么),但是在keyleft和keyright上,我的代码被输入 – 它永远不会用于键盘和键盘,无论我多么努力地咬紧牙关.
解决方法 windows会在每次发送到您的表单之前捕获某些用于UI导航的键.如果要覆盖此行为,则需要重载IsinputKey方法(并将文本字段子类化):protected overrIDe bool IsinputKey(Keys keyData) { if (keyData == Keys.Right) return true; return base.IsinputKey(keyData); }总结
以上是内存溢出为你收集整理的c# – KeyDown识别左右方向箭头键,但不识别上下键全部内容,希望文章能够帮你解决c# – KeyDown识别左右方向箭头键,但不识别上下键所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)