如何在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。

祝好运,

阿拉姆阿夫萨尔