级联Splitter面板的MDI形式

时间:2010-06-15 18:54:50

标签: c# winforms mdi

我在主窗体中显示MDI窗口,但在分割器面板的一部分中,如下所示:

    Form2 f2= new Form2();
    f2.MdiParent = this;
    f2.Parent = this.splitContainer2.Panel2;
    f2.Show();

但问题是,如果我编写这样的代码,我就无法级联它们:

this.LayoutMdi(System.Windows.Forms.MdiLayout.Cascade);

“this”是父表格。主要形式。

锄头可以将它们级联吗?

谢谢大家。

1 个答案:

答案 0 :(得分:0)

您必须覆盖SplitContainer面板的LayoutEngine。 Microsoft有一个很好的示例here用于创建自定义布局引擎。

private void CascadeToolStripMenuItem_Click(object sender, EventArgs e) {
        //LayoutMdi(MdiLayout.Cascade);
        Rectangle bounding = this.splitContainer1.Panel1.DisplayRectangle;
        Point nextFormLocation = bounding.Location;
        foreach (Control c in this.splitContainer1.Panel1.Controls) {
            if (!c.Visible) {
                continue;
            }

            nextFormLocation.Offset(c.Margin.Left, c.Margin.Top);

            c.Location = nextFormLocation;
            c.BringToFront();

            if (c.AutoSize) {
                c.Size = c.GetPreferredSize(bounding.Size);
            }

            nextFormLocation.X = bounding.X + 20;

            nextFormLocation.Y = bounding.Y + 20;

        }
    }

只需将上面的代码添加到您的级联按钮,您就可以获得级联的基础知识。