MdiLayout没有产生所需的输出

时间:2012-10-04 15:45:35

标签: c# winforms mdi

我有一个MDI容器,允许用户在打开时选择是否让表单的子窗口级联或级联。用户可以通过单击并选中菜单中的项目来选择此选项。但是,在检查项目并打开表单后,它们会显示在彼此的顶部而不是平铺或级联。我打算在打开表单后调用布局方法[在下面的方法中的dlg.Show()之后],但它仍然没有产生正确的布局。

有什么想法吗?

菜单事件处理程序

private void titledToolStripMenuItem_Click(object sender, EventArgs e)
    {
        cascadingToolStripMenuItem.Checked = false;
        this.LayoutMdi(MdiLayout.TileHorizontal);
    }

    private void cascadingToolStripMenuItem_Click(object sender, EventArgs e)
    {
        titledToolStripMenuItem.Checked = false;
        this.LayoutMdi(MdiLayout.Cascade);
    }

表单打开方法

private void openTallChildToolStripMenuItem_Click(object sender, EventArgs e)
    {
        TallChild dlg = new TallChild(this.height);
        dlg.MdiParent = this;
        dlg.Show();

    }

2 个答案:

答案 0 :(得分:0)

当孩子的FormBorderStyle未设置为Sizable时,可能会发生这种情况。

尝试:

dlg.FormBorderStyle = FormBorderStyle.Sizable;

答案 1 :(得分:0)

我必须将this.LayoutMdi置于受保护的覆盖void OnShown以使布局正常工作https://stackoverflow.com/a/2836353/74585