KeyDown事件未被触发

luk*_*kew 5 c# events taskbar keydown

我有一个表格,要求用户Q按键3次.当他这样做时,表格将消失(这就是为什么我使用无边框形式来防止击中X-Button).表单本身不是模态的.

这是我用来处理KeyDown事件的代码:

private void ConfirmForm_KeyDown_1(object sender, KeyEventArgs e)
{
    if (e.KeyCode == Keys.Q)
    {
        if (++count == 3)
            this.Close();
    }
}
Run Code Online (Sandbox Code Playgroud)

现在我不想在任务栏中为此表单添加额外的项目,因此我将ShowInTaskbar属性设置为false.问题是,KeyDown当表单没有显示在任务栏中时,事件不再被触发 - 当它完成时,everthing工作得很好.

有谁知道如何修复这个bug?

Blu*_*kMN 11

必须将表单的KeyPreview属性设置为True,以便表单在表单上有其他可以获得焦点的控件时接收键事件.

编辑:此外,如果要阻止按下X按钮,可以将ControlBox设置为False,这会隐藏标题栏按钮.