抑制蜂鸣声winform /文本框

时间:2015-07-27 16:51:23

标签: keydown beep

我有一个按键序列" CTRL + U"在表单中,我有一个KeyDown方法,可以查看关键变量e并执行它想要的操作。它没有设定结果。

有效。

但是如果对表单的关注是在文本框中并按下组合键,它仍然有效,但随后我发出了哔哔声。

我对如何解决这个问题感到有些困惑,因为在每个控件中都要压制一个关键事件听起来很多工作(我应该有几个文本框)。

处理程序:

    private void XXXXXForm_KeyDown(object sender, KeyEventArgs e)
    {
        if(e.Control)
        {
            bool bHandle = false;
            bool bChecked = true;
            if (e.KeyCode == Keys.U)
            {
                bChecked = false;
                bHandle = true;
            }
            else if (e.KeyCode == Keys.T)
            {
                bChecked = true;
                bHandle = true;
            }

            if(bHandle)
            {
                // Do stuff
            }
        }
    }

1 个答案:

答案 0 :(得分:2)

我在其他网站上发现了这些信息:

  

“e.Handled = true;”声明没有按照你的想法行事。   文档[^]对此感到困惑,可以解释它   你的方式。但是,你需要意识到他们在说话   关于在KeyPress事件中设置“已处理”。去把事情弄得更糟,   KeyPressed事件使用KeyPressEventArgs而不是KeyEventArgs。

     

而是使用e.SuppressKeyPress = true;

这就是解决方案!