微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

c# – 某些键盘比其他键盘更啰嗦吗?

首席开发人员表示,当他使用我的应用程序时,当他通过方向箭头键在TableLayoutPanel上的TextBoxes之间移动时,他的键盘会发出蜂鸣声.

但是,我没有听到这样的听觉活动.

这是我的代码

// Had to intercept Up and Down arrows from Windows
private void textBoxPlatypi_PreviewKeyDown(object sender,PreviewKeyDownEventArgs e) {
    TextBox tb = (TextBox)sender;

    if (e.KeyCode.Equals(Keys.Up)) {
        SetFocusOneRowUp(tb.Name);
        return;
    }
    if (e.KeyCode.Equals(Keys.Down)) {
        SetFocusOneRowDown(tb.Name);
        return;
    }
}

private void textBoxPlatypi_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;
    }
}

..他想也许我需要“e.Handled”,但这在PreviewKeyDown事件中不可用.

有没有办法抑制哔哔声(这显然只发生在某些键盘或特定设置上(他使用的是Windows7,我还在使用XP))?

UPDATE

我现在有了这个代码

private void textBoxPlatypus1_PreviewKeyDown(object sender,PreviewKeyDownEventArgs e) {
    switch (e.KeyCode) {
        case Keys.Down:
        case Keys.Up:
            e.IsInputKey = true;
            break;
    }
}

private void textBoxPlatypus1_KeyDown(object sender,KeyEventArgs e) {
    TextBox tb = (TextBox)sender;

    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;
    }

    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;
    }
}

……但他仍然听到哔哔声(我没有).

他在阿拉斯加并使用Windows 7;我在加州并使用XP.我不知道是否存在某些组合/不匹配问题…

再次更新

我知道这对某些人来说可能是令人震惊的,但阿拉斯加/加利福尼亚的断线与此无关.我现在也听到了哔哔声,而且它不是来自箭头键.当在TextBox中输入一个值然后,如果该文本框已经有一个字符,焦点将移动到下一个textBox并在那里输入值(这是导致这种情况发生的代码).但令人恼火的哔哔声似乎是随机的 – 我还没有想出它发出哔哔声的模式(有时会发出哔哔声,有时候却没有)……有没有人碰过这样的事情,或者更好的是,知道如何抑制哔哔声?我正在做的就是按下键盘上方的“1”或“2”键.

解决方法

PreviewKeyDownEvent中没有办法像普通的KeyDown事件那样处理/抑制KeyEvent.文档建议将PreviewKeyDownEventArgs.IsInputKey属性设置为true,以便处理KeyDown事件中通常不可用的按键操作.

链接上方,他们使用一个按钮作为示例:

Some key presses,such as the TAB,RETURN,ESC,and arrow keys,are typically ignored by some controls because they are not considered input key presses… By handling the PreviewKeyDown event for a Button and setting the IsInputKey property to true,you can raise the KeyDown event when the arrow keys are pressed. However,if you handle the arrow keys,the focus will no longer move to the prevIoUs or next control.

原文地址:https://www.jb51.cc/csharp/99885.html

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐