如何在mdiparent窗口的中心加载mdichild

Sri*_*V M 6 c# mdi

大家好,

我有这个代码,其中窗口属性使子窗口加载在mdiparent的中心.

        Form2 f = new Form2();

        f.MdiParent = this;

        //center screen is working.

        //f.StartPosition = FormStartPosition.CenterScreen;

        f.StartPosition = FormStartPosition.CenterParent;
Run Code Online (Sandbox Code Playgroud)

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

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

alt text http://img13.imageshack.us/img13/7003/errorprb.jpg

Fre*_*örk 13

我对此进行了一些实验,并首先得到了与Patrick相同的解决方案.但我在StartPosition财产的文件中被以下声明所窃听:

您还可以将表单放置在屏幕中央或其父表单的中心,以显示多文档界面(MDI)子表单等表单.

所以,我决定必须有办法.虽然我发现它并不直观,但设置StartPositionCenterScreen( CenterParent):

MdiChildUI form = new MdiChildUI();
form.MdiParent = this;
form.StartPosition = FormStartPosition.CenterScreen;
form.Show();
Run Code Online (Sandbox Code Playgroud)

当然,您也可以在设计器中而不是在代码中设置它.


Pat*_*ald 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();
Run Code Online (Sandbox Code Playgroud)

编辑:

f.StartPosition = FormStartPosition.CenterScreen;
Run Code Online (Sandbox Code Playgroud)

是将 mdichild 放在其父窗体上的正确方法。


dan*_*ish 5

将开始位置设置为中心屏幕对我来说非常适合。