我如何关闭我的C#WinForms程序,同时有一些控件如树视图,按钮和其他东西都存在于它们中并且它们有焦点,可能它们有相同的键盘快捷键?
例如,在我的树视图中,如果按ALT + ESC键,将删除节点。但我希望能够通过按ESC键调用'this.Close()'方法,无论是否有任何控件都有焦点。
感谢。
答案 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就可以了。