避免在C#winform的键盘快捷方式上发出警报

时间:2014-06-30 09:36:09

标签: c# winforms events visual-studio-2012 keyboard-shortcuts

我正在使用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);
    }

1 个答案:

答案 0 :(得分: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);
}