C# - 如何为MdiChildren设置一个小的Mdi“区域”?

时间:2013-08-27 11:59:43

标签: c# winforms mdi

我有一个Mdi父表格和一些Mdi子表单。它到目前为止工作得很好但我想在父表单上定义一个较小的区域,Mdi孩子可以在那里移动。看起来属性MdiParent属于Form类型。现在我想知道如何让孩子们在特定区域内移动,而不是在整个父窗口内移动。

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

2 个答案:

答案 0 :(得分: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.Leftclient.Width = 400;,...

enter image description here

答案 1 :(得分:2)

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