如何避免在添加新的MDI子窗口时出现屏幕跳动

问题描述 投票:1回答:1

在我的MDI框架中,我正在如下创建MDI子窗口:

Form frm = new frmMyChild();
frm.MdiParent = this;
frm.WindowState = FormWindowState.Maximized;
frm.Show();
frm.Focus();

到目前为止,这很好,但是屏幕很快就会“弹起”,因为子窗口被置于“正常”状态,然后再次将它们最大化。如何预防?

c# .net winforms mdi
1个回答
1
投票

即使将MenuStrip添加到MDI父窗体,Form.MainMenuStrip仍为null。当此属性为null时,MDI子项的“系统菜单”控件不会与MenuStrip(或旧的MainMenu)一起使用,因此子子窗体标题栏仍然可见,并位于MenuStrip上方。当创建并最大化新的子窗体时,在重新创建子窗体标题时,上下菜单MenuStrip bouncesMainMenuStrip属性设置为MDI父级MenuStrip的实例,将使MDI子级的System Menu控件与MenuStrip(或MainMenu)一起成为

blend

有趣的是,在.Net Source Code中看到此行为和设计随时间变化了多少次(这只是注释:)。

[TheMDIMenuStrip

是在设计时创建并在InitializeComponent()中初始化的MDI父级的MenuStrip。 public partial class MDIParent : Form { public MDIParent() { InitializeComponent(); this.MainMenuStrip = this.TheMDIMenuStrip; this.TheMDIMenuStrip.SendToBack(); } ... }
之前:

MDI MenuStrip Maximize before

之后:

MDI MenuStrip Maximize after

© www.soinside.com 2019 - 2024. All rights reserved.