我有一个 MDI 容器窗体,以及一些子窗体,它们自己独立地更新它们的标题栏文本。在子窗体上更改 Text 属性后,打开菜单时,子窗体的新标题栏文本不会在窗口列表菜单中更新。这是 .NET 通过 MdiWindowListItem 属性提供的自动生成的窗口列表。
仅当另一个事件以物理方式更改窗口列表(打开一个新的子项、关闭一个子项、切换到另一个子项)时,更改才会传播。
有没有办法以编程方式强制更新窗口列表?我已经有一些代码可以在更改子标题栏文本的同时启用/禁用菜单。
我尝试了以下但没有成功:
- 主 MenuStrip 上的 Update()
- 主 MenuStrip 上的 Refresh()
- 窗口 MenuStrip 上的 Invalidate()
- 在运行时对窗口列表项之一进行 Invalidate()
- 在运行时在其中一个窗口列表项上切换 Checked 状态两次
似乎没有任何其他远程可行的函数可以调用菜单项、其父 ToolStrip 或包含菜单系统的父窗体。
最佳答案
上述解决方案对我不起作用。但是我点击了链接,发现这个非常有效:
private void windowMenu_DropDownOpening(object sender, EventArgs e)
{
if (this.ActiveMdiChild != null)
{
Form activeChild = this.ActiveMdiChild;
ActivateMdiChild(null);
ActivateMdiChild(activeChild);
}
}
谢谢!
关于c# - MDI 窗口列表不更新子标题栏文本,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1347734/