c# – KeyDown识别左右方​​向箭头键,但不识别上下键

c# – KeyDown识别左右方​​向箭头键,但不识别上下键,第1张

概述使用下面的代码,左箭头键和右箭头键按预期运行,但不识别向上和向下箭头(单步执行它,在适当的情况下满足前两个条件,但后两个条件永远不会): private void textBox1_KeyDown(object sender, KeyEventArgs e) { TextBox tb = (TextBox)sender; if (e.KeyCode.Equals(Keys.Lef 使用下面的代码,左箭头键和右箭头键按预期运行,但不识别向上和向下箭头(单步执行它,在适当的情况下满足前两个条件,但后两个条件永远不会):
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识别左右方​​向箭头键,但不识别上下键所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/langs/1248031.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-06-07
下一篇 2022-06-07

发表评论

登录后才能评论

评论列表(0条)

保存