我有以下代码:
//Create the login form.
ConnectionTypeForm ctf = new ConnectionTypeForm();
if (ctf.ShowDialog() == DialogResult.OK)
{
Form form = Statics.CreateForm(
"Main Form",
new MainDesignerControl());
Application.Run(form);
}
当我运行该程序时,ConnectionTypeForm
将在我的右侧(辅助)监视器上打开,但只要MainForm
打开,它就会在左侧监视器(主要)上打开。我无法将它的起始位置设置为FormStartPosition.CenterParent
,但由于ConnectionTypeForm
实际上不是MainForm
的父级,所以它没用。
有什么建议吗?我只是想在同一台显示器上打开它。
答案 0 :(得分:2)
它不是一个简单的解决方案,但您始终可以将应用程序的位置存储在注册表中。每次打开表单时,都可以检查该值是否存在。
这样,您自己或任何用户都可以更改表单打开的位置。
通过一些数学计算,你可以找出屏幕的“中心”。
还需要考虑分辨率是否已更改(因此您的应用程序不在屏幕外,例如,如果您取消对接笔记本电脑并且分辨率已更改)。
答案 1 :(得分:0)
在ShowDialog()方法中指定父项并更改开始位置。
Dim ds As New FormDiagramSettings
ds.StartPosition = FormStartPosition.CenterParent
ds.ShowDialog(Me)
或c#
FormDiagramSettings ds = new FormDiagramSettings();
ds.StartPosition = FormStartPosition.CenterParent;
ds.ShowDialog(this);
答案 2 :(得分:-1)
试试这个:
Form form = new Form();
form.StartPosition = FormStartPosition.CenterParent;
form.Show();