在 SplitContainer 中关闭 mdi 子项
Posted
技术标签:
【中文标题】在 SplitContainer 中关闭 mdi 子项【英文标题】:Closing mdi child in SplitContainer 【发布时间】:2015-05-22 21:11:57 【问题描述】:我正在开发一个 winforms 应用程序,并且我正在将一个 mdi 子窗体放在 splitcontainer.panel1 中。 当我想关闭当前的 mdi 孩子以打开另一个孩子时,我无法获得孩子表单。 我正在使用此代码打开新的孩子,但我想让当前的孩子关闭它:
Accueil accueil = new Accueil();
accueil.MdiParent = this;
accueil.TopLevel = false;
this.splitContainer1.Panel1.Controls.Add(accueil);
accueil.WindowState = FormWindowState.Maximized;
accueil.Size = this.splitContainer1.Panel1.ClientSize;
accueil.MinimizeBox = false;
accueil.MaximizeBox = false;
accueil.ControlBox = false;
accueil.Width = this.splitContainer1.Panel1.Width;
accueil.Height = this.splitContainer1.Panel1.Height;
accueil.Show();
【问题讨论】:
【参考方案1】:将 MDI 子窗口放入拆分容器没有任何意义。通过将表单的 TopLevel 属性设置为 false,您可以将表单转换为普通控件。最好不要丢失参考。但你可能会领先:
while (splitContainer1.Panel1.Controls.Count > 0)
splitContainer1.Panel1.Controls[0].Dispose();
var accueil = new Accueil();
accueil.TopLevel = false;
accueil.Dock = DockStyle.Fill;
accueil.FormBorderStyle = System.Windows.Forms.FormBorderStyle.None;
accueil.Visible = true;
this.splitContainer1.Panel1.Controls.Add(accueil);
请考虑改用 UserControl,它是一种理智的方法,最不可能长期混淆。
【讨论】:
我应该从一开始就考虑一下,现在可以了。谢谢。以上是关于在 SplitContainer 中关闭 mdi 子项的主要内容,如果未能解决你的问题,请参考以下文章
c#中关于splitContainer控件的用法:如何做到不清除控件就能在panel2中打开一个窗体呢?
C# WPF.MDI,点击关闭按键后,如何在Closing中取消该关闭操作?