如何在以前的胜利形式C#的同一位置打开新的胜利形式

时间:2017-08-04 18:12:47

标签: c# forms

我试图让Win Form应用程序在与上一个表单相同的位置打开。到目前为止我找到的唯一解决方案是将StartPosition设置为CenterScreen;但是,希望新表单实际打开前一个表单停止的位置。

以下是我尝试使用的代码。

Form1 F1 = new Form1();
this.Hide();
F1.ShowDialog();

F1.Left = this.Left;
F1.Top = this.Top;
F1.Size = this.Size;

this.Close();

2 个答案:

答案 0 :(得分:3)

您可以抓取您隐藏的表单的Location,并使用它来设置新表单的位置。但是,如果您希望WinForms引擎考虑此位置,则需要将StartPosition属性设置为 FormStartPosition.Manual

// Current form
Form f1 = new Form();
f1.Show();
Application.DoEvents();
Thread.Sleep(5000);

f1.Hide();
Form f2 = new Form();
f2.StartPosition = FormStartPosition.Manual;
f2.Location = f1.Location;
f2.Size = f1.Size;
f2.ShowDialog();

顺便说一句,在你的代码中,设置Top,Left和Size属性后调用ShowDialog是没用的,因为ShowDialog是模态的,直到你关闭用ShowDialog打开的表单才会返回,所以你应用这些属性为封闭形式

答案 1 :(得分:0)

哦!我以前碰到过这个。试试下面的代码,让我知道它是否适合您:

yourNewForm.Location = new Point(this.Left, this.Top);

或者如果调用表单仍然存在,则更容易:

yourNewForm.Location = this.Location;