6

大家好,

我有这段代码,其中使子窗口加载的窗口属性位于 mdiparent 的中心。

        Form2 f = new Form2();

        f.MdiParent = this;

        //center screen is working.

        //f.StartPosition = FormStartPosition.CenterScreen;

        f.StartPosition = FormStartPosition.CenterParent;

但不是让子窗口在中心弹出,而是在左侧加载。谁可以帮我这个事。请参考下面的截图。

我什至尝试在 vb 中做同样的事情。即使在那里我得到同样的错误。我认为 FormStartPosition.CenterParent 的属性是虚拟的。

替代文字 http://img13.imageshack.us/img13/7003/errorprb.jpg

4

4 回答 4

16

我对此进行了一些实验,首先得出了与帕特里克相同的解决方案。但是我被财产文档中的StartPosition以下声明所困扰:

对于多文档界面 (MDI) 子表单等表单,您还可以将表单定位在屏幕中心或在其父表单的中心显示。

所以,我决定一定有办法。还有,虽然我不觉得这一切都很直观:设置StartPositionCenterScreen不是 CenterParent):

MdiChildUI form = new MdiChildUI();
form.MdiParent = this;
form.StartPosition = FormStartPosition.CenterScreen;
form.Show();

当然,您也可以在设计器中而不是在代码中进行设置。

于 2009-08-04T15:48:39.777 回答
5

将起始位置设置为中心屏幕非常适合我。

于 2009-08-04T15:54:52.167 回答
5

我尝试将具有 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 置于其父窗体中心的正确方法。

于 2009-08-04T15:32:33.370 回答
0

窗体具有MdiParent属性和Parent属性。

请注意,MdiParent不是MdiChild 表单的父级。

它是,它的 MdiParent;

所以CenterToParent方法对于这些类型的表单是没有意义的。

当您为多监视器应用程序编程时,或者通过将其Toplevel属性设置为 false 并将其Parent属性设置为另一个表单时,您可以看到CenterToParent方法的功能。

祝你好运,

阿拉姆阿夫萨尔

于 2014-05-03T06:25:28.413 回答