我有一个应用程序,其中我已经为给定的一组操作实现了一些键盘快捷键,其中一些使用 ALT 作为修饰符,例如 ALT + 1 。功能本身工作正常,但在按键期间系统会发出蜂鸣声。
我已经阅读了各种帖子,说我可以在KeyPress事件中使用e.Handled但是这在我的场景中没有帮助。通过创建新的Windows窗体应用程序并在不进行任何修改的情况下运行它,可以轻松复制该问题,例如按 ALT + 1 将导致系统发出蜂鸣声。
我注意到其他应用程序(如记事本)也有此行为,如果启动记事本并按 ALT + J (或任何其他无效菜单按键)系统会发出哔哔声。
有没有办法阻止我的应用程序发出蜂鸣声,还是标准的Windows行为?
答案 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,则仍然会发出哔哔声。