0

我正在尝试使用 MDI 表单创建一个菜单驱动的应用程序。我的问题是 MDI 父级中的菜单每次单击时都会创建一个新子级。我如何只允许为特定表单打开一个特定的子实例,但允许打开来自不同菜单的多个表单。例如,我希望“文件”中的子项与“编辑”子项一起打开。另外,有没有办法在打开新表单时关闭所有其他表单?

4

2 回答 2

0

您可以通过 MDIChildren 集合检查表单的现有实例:

private void form2ToolStripMenuItem_Click(object sender, EventArgs e) {
  Form2 f = this.MdiChildren.OfType<Form2>().SingleOrDefault();
  if (f == null) {
    f = new Form2();
    f.MdiParent = this;
    f.Show();
  } else {
    f.BringToFront();
  }
}

如果你想关闭任何以前打开的表单,你也可以通过 MDIChildren 集合:

if (f == null) {
  while (this.MdiChildren.Count() > 0) {
    this.MdiChildren[0].Dispose();
  }
  // etc...
于 2013-08-07T14:34:18.610 回答
0

您可以通过检查主窗体的MdiChildren数组来完成所有这些工作。该数组将列出表单上所有打开的 MDI 子项。

您可以通过遍历数组并检查所请求类型的表单是否已打开来确定表单的实例是否已打开。

要关闭所有打开的表单,只需循环MdiChildren并调用Close所有表单。

于 2013-08-07T12:00:55.870 回答