表单在错误的监视器上打开

时间:2012-08-28 14:26:59

标签: c# .net winforms

我有以下代码:

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

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

3 个答案:

答案 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();