我有一个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();
}
}
答案 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();
然后,您可以像在表单上一样使用Properties
和methods
,例如client.Dock = DockStyle.Left
,client.Width = 400;
,...
答案 1 :(得分:2)
将其他控件停靠到MDI父窗体的边缘时,它是自动的。深灰色MDI客户端窗口缩小以适应剩余空间。使用Dock属性是必不可少的部分。