0

我想在我的应用程序的拆分容器 Panel2 上添加 12 个小表单。那是一个 4x3 = 12 个表格的网格。

所以在我的应用程序的主窗体中,我添加了一个 SplitContainer 控件。我分别创建了 12 个单独的表单。
要将 12 个表单添加到 splitcontainer,我这样做:

        form1 _form1 = new form1();
        _form1.TopLevel = false;
        this.splitContainer1.Panel2.Controls.Add(_form1);
        _form1.Show();
        ....
        form12 _form12 = new form12();
        _form12.TopLevel = false;
        this.splitContainer1.Panel2.Controls.Add(_form12);
        _form12.Show();

这里的问题是所有表单(form1...form12)都显示在同一个位置(Location),behing form1。所以我必须手动移动和替换每个表单

我想要得到的是一个包含所有 12 个表单的 SplitCONtainer,每个表单都位于彼此不同的特定位置。

因此,当 SplitContainer 调整大小时,所有 12 个表单也都在调整大小,并且当一个表单关闭时,它的速度保持为空,直到一个新表单被放置在那里。

编辑。我在这里编辑以展示我如何解决这个问题

        int _width = this.flowLayoutPanel1.Width;
        int _height = this.flowLayoutPanel1.Height;

        _width = (int)_width / 4;
        _height = (int)_height / 3;

        _form1.TopLevel = false;
        _form1.Width = _width;
        -form1.height = _height;
        _form1.Owner = this;
        _form1.TopLevel = false;
        flowLayoutPanel1.Controls.Add(_form1);
        _form1.Show();
....
_form12.TopLevel = false;
            _form12.Width = _width;
            -form12.height = _height;
            _form12.Owner = this;
            _form12.TopLevel = false;
            flowLayoutPanel1.Controls.Add(_form12);
            _form12.Show();

它可以按我的意愿工作。感谢您将 FlowLayoutPanel 引入 SplitContainer.panel

4

1 回答 1

3
        Form frm;
        for (int i = 0; i < 12; i++)
        {
            frm = new Form(); //generate new instance
            frm.Width = 150;
            frm.Height = 150;
            frm.Owner = this;
            frm.TopLevel = false;
            flowLayoutPanel1.Controls.Add(frm);
            frm.Show();
        }

您可以使用 FlowlayoutPanel。只需将 Flowlayoutpanel 添加到 SplitContainer1.Panel2 并设置 flowLayoutPanel1.dock = Fill

于 2013-01-08T04:59:55.297 回答