3

我有一个 Mdi 父表单和一些 Mdi 子表单。到目前为止效果很好,但我想在父窗体上定义一个较小的区域,Mdi 子级可以在其中移动。看起来该属性MdiParent是 type Form。现在我想知道如何让孩子在特定区域内移动,而不是在整个父窗口内移动。

class MdiParentForm: Form
{
    public MdiParentForm()
    {
        this.IsMdiContainer = true;
        Form form = new Form();
        this.AddOwnedForm(form);
        form.MdiParent = this;
        form.Show();
    }
}
4

2 回答 2

4

你可以设置Padding你的Mdi表单。填充是控件(作为容器)与其子控件之间的距离。有 4 个边:左、上、右、下。这段代码只是使所有方面都相同:

Padding = new Padding(50);

你可以注意到BackColor周围MdiClient没有受到影响。要影响BackColor周围MdiClient,我们必须覆盖 ,OnPaint以便不处理默认行为:

BackColor = Color.Green;//try setting the BackColor of the Mdi form to Color.Green
protected override void OnPaint(PaintEventArgs e){
   RaisePaintEvent(this, e); //remove the base.OnPaint(e)
}

如果您想完全控制MdiClient,只需声明一个变量来保存MdiClient

MdiClient client = Controls.OfType<MdiClient>().First();

然后您可以像在表单上一样使用它的Propertiesmethods类似的,例如client.Dock = DockStyle.Left, client.Width = 400;, ...

在此处输入图像描述

于 2013-08-27T13:12:54.390 回答
2

当您将其他控件停靠到 MDI 父窗体的边缘时,它是自动的。深灰色 MDI 客户端窗口缩小以适应剩余空间。使用 Dock 属性是必不可少的部分。

于 2013-08-27T12:10:55.293 回答