【问题标题】:Avoiding alert on key board shortcut of C# winform避免警告 C# winform 的键盘快捷键
【发布时间】:2014-08-20 15:29:06
【问题描述】:

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

【问题讨论】:

  • 你能解释一下“恼人的哔哔声”是什么意思吗?当快捷方式正确时它会这样做吗?什么时候按?什么时候执行动作??
  • “恼人的哔哔声”表示 Windows 警报声像“叮”的声音。它正确执行。 “叮”的声音是问题所在。

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


【解决方案1】:

您在 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);
}

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2011-04-08
    • 1970-01-01
    • 1970-01-01
    • 2014-03-11
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多