避免 C# winform 中键盘快捷方式的警报提示

3

我正在使用Visual Studio 2012在C#中为一个Winform应用程序创建快捷键。我的快捷键运行得很好,但是会发出一个烦人的蜂鸣声。

根据许多线程的建议,我添加了e.Handled = true;e.SuppressKeyPress = true;,但它不起作用,而且我的winform卡住了。

如何避免这种情况?

private void textBoxSearch_KeyDown(object sender, KeyEventArgs e)
    {
        if (e.KeyCode == Keys.Down)
        {
            do stuff
        }
        else if (e.KeyCode == Keys.Enter)
        {
            //do stuff
        }
        e.Handled = true;
        e.SuppressKeyPress = true;
    }

我也需要解决这个问题。

 protected override bool ProcessCmdKey(ref Message msg, Keys keyData)
    {
        if (keyData == (Keys.Control | Keys.F))
        {
            //do stuff
        }
        else if (keyData == (Keys.Control | Keys.G)) {
            //do stuff
        }

        return base.ProcessCmdKey(ref msg, keyData);
    }

你能否澄清一下"烦人的哔哔声"是什么意思?当快捷键正确时会出现吗?按下它时会响吗?还是执行操作时会响? - Nahuel Ianni
"an annoying beep" 意味着 Windows 警告声音像 "Ding"。它的执行是正确的,但 "Ding" 声音是个问题。 - user3693167
1个回答

0

你在 KeyDown 事件中的代码应该可以工作。当我复制了你的代码并设置 SupressKeyPress = true 后,就没有听到嘟声了。

在 ProcessCmdKey 事件中,你需要这样写:

protected override bool ProcessCmdKey(ref Message msg, Keys keyData)
{
    if (keyData == (Keys.Control | Keys.F))
    {
        //do stuff
        return;
    }
    else if (keyData == (Keys.Control | Keys.G)) {
        //do stuff
        return;
    }

    return base.ProcessCmdKey(ref msg, keyData);
}

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接