c# - MDI 窗口列表不更新子标题栏文本

标签 c# winforms menu mdi

我有一个 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/

相关文章:

c# - 自数据库创建以来支持 'EFDbContext' 上下文的模型已更改

html - 我的 css 下拉菜单不会显示子菜单

c# - Windows 窗体 ComboBox - 不区分大小写的数据绑定(bind)

php - 我怎样才能做一个子菜单

javascript - 在 JavaScript 中创建下拉菜单/div

c# - 具有 azure 服务总线的公共(public)交通 : Why Messages go to the queue_skipped?

c# - ASP.NET Core 中 Startup.cs 中的 Kestrel 关闭函数

c# - 获取两个值之间的时间差

c# - 在 C# 中开发 winform 应用程序是否有任何标准的屏幕分辨率

winforms - 表单加载时停止触发组合框的 selectedIndexChanged 事件