有些键盘比其他键盘更有趣吗?

主要开发人员表示,当他使用我的应用程序时,他的键盘在通过方向箭头键在TableLayoutPanel上的文本框之间移动时发出嘟嘟声。

但是,我听不到这样的听觉活动。

这是我的代码:

// 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。 我不知道是否有某种组合/不匹配存在问题...

再次更新

我知道这可能会让一些人感到震惊,但阿拉斯加/加利福尼亚州的断线与此无关。 我现在也听到了哔哔声,它不是来自箭头键。 当文本框中输入一个值时,如果该文本框中已经有一个字符,焦点将移动到下一个文本框,并且该值被输入(这是导致这种情况发生的代码)。 但刺激的哔哔声似乎是随机的 - 我还没有弄清楚它发出哔哔声时的模式(有时它确实有时不会)......有没有人跑过类似的东西,或者更好的是,知道如何抑制嘟嘟声? 我所做的只是按下键盘上方的“1”或“2”键。


在正常的KeyDown事件中,PreviewKeyDownEvent没有办法处理/压住KeyEvent。 文档建议将PreviewKeyDownEventArgs.IsInputKey属性设置为true,以便处理在KeyDown事件中通常不可用的按键。

从上面的链接中,他们使用一个按钮作为示例:

某些按键(如TAB,RETURN,ESC和箭头键)通常会被某些控件忽略,因为它们不被视为输入按键...通过处理Button的PreviewKeyDown事件并将IsInputKey属性设置为true,您可以在按下箭头键时提高KeyDown事件。 但是,如果您处理箭头键,焦点将不再移动到上一个或下一个控件。


尝试这个:

    e.SuppressKeyPress = true;
链接地址: http://www.djcxy.com/p/59583.html

上一篇: Are some keyboards more loquacious than others?

下一篇: How to refresh cache of Amazon S3 Storage for static webpage?