1

我有一个 MDI 应用程序。我有一个ToolStripMenuItem标记为“Window”的设置为MdiWindowListItem我的 main MenuStrip。Window 菜单有几个项目,例如“Cascade”和“Arrange Icons”。

当我运行我的应用程序时,窗口菜单以我的“排列图标”项目结束。正如预期的那样,当我打开一个或多个 MDI 子窗体时,它们会自动附加到ToolStripSeparator. 当我关闭所有子表单时,它们会按预期从“窗口”菜单中消失,但ToolStripSeparator仍然存在。我本来希望菜单恢复到原来的状态,即没有分隔符。

就目前而言,分隔符会自动添加但不会自动删除。当然,我可以尝试以编程方式消除额外的分隔符,但我没有看到其他人抱怨这一点,这让我怀疑这可能是因为我做错了什么而发生的。请指教。

4

2 回答 2

1

尝试在“排列图标”菜单项之后添加您自己的 ToolStripSeparator 菜单项,并将 Visible 属性设置为 false。

打开 MDI 子窗体时,使其可见:

  Form f = new Form();
  f.Text = "Test Form";
  f.MdiParent = this;
  f.FormClosed += ChildClosed;
  f.Show();
  ts.Visible = true;

然后在 ChildClosed 方法中:

void ChildClosed(object sender, FormClosedEventArgs e) {
  this.BeginInvoke((Action)delegate 
                      { ts.Visible = (this.MdiChildren.Count() > 0); }
                  );
}
于 2012-10-18T15:39:06.437 回答
0

ts.Visible = (this.MdiChildren.Count() > 1)
在孩子的封闭事件中就足够了。不需要 BeginInvoke

于 2013-04-10T10:18:42.513 回答