WinForms ALT键发出哔哔声

时间:2014-07-11 08:43:55

标签: c# vb.net winforms

我有一个应用程序,其中我已经为给定的一组操作实现了一些键盘快捷键,其中一些使用 ALT 作为修饰符,例如 ALT + 1 。功能本身工作正常,但在按键期间系统会发出蜂鸣声。

我已经阅读了各种帖子,说我可以在KeyPress事件中使用e.Handled但是这在我的场景中没有帮助。通过创建新的Windows窗体应用程序并在不进行任何修改的情况下运行它,可以轻松复制该问题,例如按 ALT + 1 将导致系统发出蜂鸣声。

我注意到其他应用程序(如记事本)也有此行为,如果启动记事本并按 ALT + J (或任何其他无效菜单按键)系统会发出哔哔声。

有没有办法阻止我的应用程序发出蜂鸣声,还是标准的Windows行为?

3 个答案:

答案 0 :(得分:2)

您可以处理KeyDown事件并为Alt + 1执行类似的操作但我怀疑您可能必须为所有无效键执行此操作

private void keyDown(object sender, KeyEventArgs e)
{
   if (e.KeyCode >= Keys.D1 && e.Alt)
   {
       e.Handled = true;
       e.SuppressKeyPress = true;
   }
}

答案 1 :(得分:0)

您可以尝试在KeyPress事件管理中使用SuppressKeyPress吗?

 e.SuppressKeyPress = true;

答案 2 :(得分:0)

在某些情况下,我使用Alt + E来编辑记录。 这是我消除哔声的方法。

private void Object_KeyUp(object sender, KeyEventArgs e)
{
    if (e.KeyCode == Keys.E && e.Alt)
    {
        e.SuppressKeyPress = true;
    }
}

private void Object_KeyUp(object sender, KeyEventArgs e)
{
    if (e.KeyCode == Keys.E && e.Alt)
    {
        e.SuppressKeyPress = true;
        EditRecord();  // This opens a form for the editing process
    }
}
  

注意:如果您尝试使用Object_KeyDown中的EditRecord,而只使用Object_KeyUp中的SuppressKeyPress,则仍然会发出哔哔声。