我有一个按键序列" 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
}
}
}
答案 0 :(得分:2)
我在其他网站上发现了这些信息:
“e.Handled = true;”声明没有按照你的想法行事。 文档[^]对此感到困惑,可以解释它 你的方式。但是,你需要意识到他们在说话 关于在KeyPress事件中设置“已处理”。去把事情弄得更糟, KeyPressed事件使用KeyPressEventArgs而不是KeyEventArgs。
而是使用e.SuppressKeyPress = true;
这就是解决方案!