2

我有以下代码:

//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父级,所以它没用。

有什么建议么?我只是希望它在同一台显示器上打开。

4

3 回答 3

2

这不是一个简单的解决方案,但您始终可以将应用程序的位置存储在注册表中。每次打开表单时,您都可以检查该值是否存在。

这样,您自己或任何用户都可以更改表单打开的位置。

通过一些数学运算,您可以找出屏幕的“中心”。

还需要考虑分辨率是否已更改(因此您的应用程序不会离开屏幕,例如,如果您卸下笔记本电脑并且分辨率已更改)。

于 2012-08-28T15:21:41.477 回答
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);
于 2019-01-31T15:53:15.397 回答
-1

尝试这个 :

Form form = new Form();
        form.StartPosition = FormStartPosition.CenterParent;
        form.Show();
于 2012-08-28T14:31:48.580 回答