【问题标题】:Closing mdi child in SplitContainer在 SplitContainer 中关闭 mdi 子项
【发布时间】: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();

【问题讨论】:

    标签: c# winforms mdichild splitcontainer


    【解决方案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,它是一种理智的方法,最不可能长期混淆。

    【讨论】:

    • 我应该从一开始就考虑一下,现在可以了。谢谢。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-03-26
    • 1970-01-01
    • 1970-01-01
    • 2023-03-30
    相关资源
    最近更新 更多