Mdi儿童改变.Net

时间:2010-04-15 13:22:06

标签: c# .net vb.net events mdi

是否有一种简单的方法来跟踪Mdi孩子的变化,即当他们被创建和关闭时,就像事件OnMdiChildListChanged(我意识到这实际上并不存在)。

我也知道我可以在我的Mdi中有一个方法来处理子表单的创建并记录它们的状态,甚至创建一个接口来定义子表单有一个“NotifyParent”方法然后被调用在表格的关闭,但我想知道是否有任何内置的事件,我可以探索?

3 个答案:

答案 0 :(得分:1)

此管道已存在,它用于自动更新MDI窗口列表(MenuStrip.MdiWindowListItem属性)。 Form类在OnVisibleChanged和OnMdiChildActivate方法中有代码来更新菜单。虽然空闲,但您无法看到菜单项列表更改,也无法覆盖任何管道代码。并非没有在您自己的子表单中执行类似的方法并重载这些方法。

解决这个问题,只需在您一直用来添加新子窗口的MDI父窗体中编写一个公共方法:

public void AddChild(Form child) {
  child.MdiParent = this;
  child.FormClosed += child_FormClosed;
  // Run your code to handle new child windows here...
}
private void child_FormClosed(object sender, FormClosedEventArgs e) {
  // Your code to handle closed child windows here...
}

您甚至可以将AddChild设为静态,因为只有一个MDI父级。

答案 1 :(得分:0)

您可以创建自己的事件,并自行在相关方法中触发它。它非常简单,您可以像内置事件一样订阅它。

答案 2 :(得分:0)

当Mdi孩子被打开或关闭时,MdiChildActivate(或OnMdiChildActivate)将被触发。