如何在mdiparent窗口的中心加载mdichild
大家好,
我有这个代码,其中使子窗口加载的窗口属性在mdiparent的中心。
Form2 f = new Form2(); f.MdiParent = this; //center screen is working. //f.StartPosition = FormStartPosition.CenterScreen; f.StartPosition = FormStartPosition.CenterParent;
但不是让子窗口弹出中心,而是在左侧加载。 谁可以帮我这个事。 请参考下面的截图。
我甚至尝试在vb中做同样的事情。 即使在那里我也得到同样的错误。 我认为FormStartPosition.CenterParent的属性是虚拟的。
alt text http://img13.imageshack.us/img13/7003/errorprb.jpg
我对此进行了一些实验,并首先得到了与帕特里克相同的解决方案。 但是我在StartPosition
属性的文档中被以下语句窃听:
您还可以将表单放置在屏幕中央或其父表单的中心,以显示多文档界面(MDI)子表单等表单。
所以,我决定必须有办法。 虽然我没有发现它直观:将StartPosition
设置为CenterScreen
( 而不是 CenterParent
):
MdiChildUI form = new MdiChildUI(); form.MdiParent = this; form.StartPosition = FormStartPosition.CenterScreen; form.Show();
当然,您也可以在设计器中而不是在代码中设置它。
将起始位置设置为中心屏幕对我来说非常适合。
我尝试将MDI容器表单作为所有者显示给孩子,但是对我造成了例外。 您可以在显示子项之前手动设置位置,如下所示:
Form2 f = new Form2(); f.MdiParent = this; f.StartPosition = FormStartPosition.Manual; f.Location = new Point((this.ClientSize.Width - f.Width) / 2, (this.ClientSize.Height - f.Height) / 2); f.Show();
编辑:
f.StartPosition = FormStartPosition.CenterScreen;
是将mdichild置于其父窗体中心的正确方法。
表单具有MdiParent属性和Parent属性。
请注意,MdiParent 不是 MdiChild表单的父级。
它是,它的MdiParent;
因此, CenterToParent方法对于这些类型的表单毫无意义。
在为多个监视器应用程序编程时,或者通过将其Toplevel属性设置为false并将其Parent属性设置为另一个窗体时,可以在另一个窗体中托管窗体时,可以看到CenterToParent方法的function。
祝好运,
阿拉姆阿夫萨尔