我创建了一个主窗体,它是一个 MDI 窗体,也是一个子窗体。
每当我“最大化”或“恢复”MDI 表单时,如何使子表单保持在父 MDI 表单的中心?
我创建了一个主窗体,它是一个 MDI 窗体,也是一个子窗体。
每当我“最大化”或“恢复”MDI 表单时,如何使子表单保持在父 MDI 表单的中心?
让我看看我是否理解正确,您希望您的 MDI 应用程序在表单的中心打开您的子表单,然后无论您如何调整它的大小都将其保留在那里。Mdi 界面对如何放置表单有自己的想法,第一步是让 Child 表单在其 load 事件中设置其位置,然后您可以使用 Parents Resize 事件将其保持在中心。这是一个使用 2 Forms 的示例,看看它是否是您正在寻找的。
Form1 Mdi 父级
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 儿童
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;
}
}
您只需将子窗体的起始位置设置在 Parent 的中心就可以了
你的孩子表格
this.StartPosition = System.Windows.Forms.FormStartPosition.CenterParent;
您可以将子表单属性“StartPosition”设置为 CenterParent
或者
加载新表单时,添加此代码
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);