保持儿童形式以MDI父母为中心

时间:2013-08-31 01:08:38

标签: c# winforms visual-studio-2010 c#-4.0

我创建了一个主表单,它是一个MDI表单,也是一个子表单。

每当我“最大化”或“恢复”MDI表单时,如何使子表单保持在父MDI表单的中心位置?

3 个答案:

答案 0 :(得分:1)

让我看看我是否理解你,你希望你的MDI应用程序在表单的中心打开你的子表单,然后将它保存在那里,无论你做什么来调整它。 Mdi界面有关于如何放置表单的自己的想法,第一步是让Child表单在其load事件中设置其位置,然后您可以使用Parents Resize事件将其保留在中心。这是一个使用2个表格的示例,看看它是否是您正在寻找的。

Form1 Mdi Parent

public partial class Form1 : Form
{
    public Form1()
    {
        InitializeComponent();
        Form2 frm2 = new Form2();
        frm2.MdiParent = this;
        frm2.Show();
    }

    protected override void OnResize(EventArgs e)
    {
        CenterForms();
        base.OnResize(e);
    }
    private void CenterForms()
    {
        foreach (var form in MdiChildren) //This will center all of the Child Forms
        {
            form.Left = (ClientRectangle.Width - form.Width) / 2;
            form.Top = (ClientRectangle.Height - form.Height) / 2;
        }

    }
}

Form2 Mdi Child

public partial class Form2 : Form
{
    public Form2()
    {
        InitializeComponent();
    }

    private void Form2_Load(object sender, EventArgs e)
    {
        Left = (MdiParent.ClientRectangle.Width - Width) / 2;
        Top = (MdiParent.ClientRectangle.Height - Height)/2;
    }
}

答案 1 :(得分:0)

您只需将子窗体的起始位置设置为Parent Like This

的中心

您的子表格

this.StartPosition = System.Windows.Forms.FormStartPosition.CenterParent;

答案 2 :(得分:0)

您可以将子表单属性“StartPosition”设置为CenterParent

OR

加载新表单时,请添加此代码

Form frm = new Form();
frm.StartPosition = FormStartPosition.Manual;
frm.Location = new Point(this.Location.X + (this.Width - frm.Width) / 2, this.Location.Y + (this.Height - frm.Height) / 2);
frm.Show(this);