我试图让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();
答案 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;