KeyDown事件未触发

8
我有一个表单,要求用户按下Q键3次。当他这样做时,表单应该消失(这就是为什么我使用无边框表单来防止点击X-Button的原因)。表单本身不是模态的。
以下是我用于处理KeyDown事件的代码:
private void ConfirmForm_KeyDown_1(object sender, KeyEventArgs e)
{
    if (e.KeyCode == Keys.Q)
    {
        if (++count == 3)
            this.Close();
    }
}

现在我不想让这个窗体在任务栏中显示额外的项,所以我将 ShowInTaskbar 属性设置为 false。问题是,当窗体不显示在任务栏中时,KeyDown 事件不再被触发 - 当它显示在任务栏中时,一切都正常工作。有人知道如何解决这个 bug 吗?
1个回答

15

为了使表单在存在其他可以接受焦点的控件时仍能接收键盘事件,必须将表单的KeyPreview属性设置为True。

补充:如果您想要防止误按关闭按钮,则可以将ControlBox设置为False,这将隐藏标题栏上的按钮。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接