Alt + F4 是关闭表单的快捷方式。 当我在MDI环境中使用此快捷方式时,应用程序将关闭,因此 显然,快捷方式适用于'容器',而不适用于 'Childform'。
捕获此事件并关闭活动的最佳做法是什么 孩子而不是容器
我读到有关在MDI激活时注册 Alt + F4 作为热键的信息。 当MDI取消激活时,取消注册热键。 因此,热键不会影响其他窗口。
有人,可以告诉你注册 Alt + F4 还是更好的东西答案 0 :(得分:-1)
您可以更改winform中的void Dispose(bool disposing)
方法,以关闭您的子表单,如下所示:
protected override void Dispose(bool disposing)
{
if (/* you need to close a child form */)
{
// close the child form, maybe by calling its Dispose method
}
else
{
if (disposing && (components != null))
{
components.Dispose();
}
base.Dispose(disposing);
}
}
编辑:正如我的评论者所说,不应修改被覆盖的Dispose
方法,而应该改为覆盖OnFormClosing
方法,如下所示:
protected override void OnFormClosing(FormClosingEventArgs e)
{
if (/* you need to close the child form */)
{
e.Cancel = true;
// close the child form, maybe with childForm.Close();
}
else
base.OnFormClosing(e);
}
答案 1 :(得分:-1)
由于还没有人回答这个问题,因此可以通过以下两个步骤来完成:
第1步:使用这种简单的逻辑使用 Alt + F4 触发MDI子窗体的关闭。
private void child_KeyUp(object sender, KeyEventArgs e)
{
if (e.KeyCode == Keys.Alt && e.KeyCode == Keys.F4)
{
this.Close();
}
}
步骤2:还可以使用此技巧来禁用影响父MDI表单的 Alt + F4 效果。
private void parent_FormClosing(object sender, FormClosingEventArgs e)
{
// note the use of logical OR instead of logical AND here
if (Control.ModifierKeys == Keys.Alt || Control.ModifierKeys == Keys.F4)
{
e.Cancel = true;
return;
}
}