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.

相关文章

在要实现单例模式的类当中添加如下代码:实例化的时候:frmC...
1、如果制作圆角窗体,窗体先继承DOTNETBAR的:public parti...
根据网上资料,自己很粗略的实现了一个winform搜索提示,但是...
近期在做DSOFramer这个控件,打算自己弄一个自定义控件来封装...
今天玩了一把WMI,查询了一下电脑的硬件信息,感觉很多代码都...
最近在研究WinWordControl这个控件,因为上级要求在系统里,...