加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

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

发布时间:2020-12-15 08:16:34 所属栏目:百科 来源:网络整理
导读:使用下面的代码,左箭头键和右箭头键按预期运行,但不识别向上和向下箭头(单步执行它,在适当的情况下满足前两个条件,但后两个条件永远不会): private void textBox1_KeyDown(object sender,KeyEventArgs e) { TextBox tb = (TextBox)sender; if (e.KeyCode.Eq
使用下面的代码,左箭头键和右箭头键按预期运行,但不识别向上和向下箭头(单步执行它,在适当的情况下满足前两个条件,但后两个条件永远不会):
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);
    }

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读