0

Esc由于某种原因,我在按下键时试图关闭我的表单时遇到问题。这个表单也有一个退出按钮,当我将代码放在退出按钮事件处理程序中时,它不起作用,所以我求助于制作一个单独的事件处理程序来保存它,它仍然不起作用。

这就是我所拥有的:

private void buttonExit_Click(object sender, EventArgs e)
{
    this.Close();
}

private void FormName_KeyDown(object sender, KeyEventArgs e)
{
    if (e.KeyCode == Keys.Escape)
        this.Close();
}
4

5 回答 5

3

您必须首先启用KeyPreview您的 Windows 窗体。转到表单属性并将其设置KeyPreviewtrue. 你的代码应该可以工作。

于 2013-10-10T13:55:04.420 回答
3

只需将Cancel表单的按钮设置为buttonExit. 它是Form. 然后你可以摆脱所有这些代码。

于 2013-10-10T13:51:09.487 回答
0

你的代码是对的。也许您没有将表单的 keydown 事件映射到表单设计上的事件处理程序方法。

于 2013-10-10T13:54:30.700 回答
0

您可以尝试将表单的KeyPreview属性设置为true:否则当您将键盘焦点放在表单内的控件上时,您的表单将不会继续 KeyDown 事件。

您也可以修改您的 buttonExit 按钮:将其属性DialogResult设置为Cancel ,以便在 Escape 按下时执行单击。

于 2013-10-10T14:03:04.760 回答
0

我认为您会发现问题与表单上的焦点有关,因为该控件将是接收按键事件的控件,而不是其所在的表单。

但是,如果您使用 Form.CancelButton 属性进行设置

然后这个硬线自动连接到 esc 键

于 2013-10-10T13:55:35.497 回答