如何在控件具有焦点时使用键盘关闭WinForm

时间:2011-05-12 11:20:58

标签: c# winforms keyboard-shortcuts

我如何关闭我的C#WinForms程序,同时有一些控件如树视图,按钮和其他东西都存在于它们中并且它们有焦点,可能它们有相同的键盘快捷键?

例如,在我的树视图中,如果按ALT + ESC键,将删除节点。但我希望能够通过按ESC键调用'this.Close()'方法,无论是否有任何控件都有焦点。

感谢。

5 个答案:

答案 0 :(得分:4)

将表单的KeyPreview属性设置为true。这允许您在控制处理程序之前处理表单处理程序中的键盘消息,即使控件具有焦点。

答案 1 :(得分:2)

也许您可以通过覆盖Form

来尝试这一点
protected override bool ProcessDialogKey(Keys keyData)
{
    if (keyData == Keys.Escape)
    {
        this.Close();
        return true;
    }
    else
        return base.ProcessDialogKey(keyData);
}

答案 2 :(得分:1)

您需要将表单的KeyPreview属性设置为true。这将使表单能够在将按键传递到其上的控件之前捕获它们,这使您可以截取它们并在需要时传递它们,或者执行其他操作,例如使用组合键关闭表单

答案 3 :(得分:0)

将Form的KeyPreview属性设置为true(它将在控件之前将键盘事件传递给form。),并在KeyXXX事件上编写代码,并检查ESC键并调用{{1} }

答案 4 :(得分:0)

它已内置于Windows中。 Alt-F4将关闭前台应用程序。你自己不需要做任何特别的事情来处理这个问题。如果你只想关闭一个窗口,而不是整个应用程序,比如在MDI风格的界面中,那么Ctrl-F4就可以了。