在双屏幕设置上显示Winforms



我在c#中有一个winforms应用程序,约有10个表格可以通过。

在所有这些上,我都将startposition设置为 Centerscreen ,但是我使用的是带有第二个屏幕的笔记本电脑。

现在,应用程序在我的一个屏幕上随机启动。同样,即使该应用在一个屏幕上,也会在第二个屏幕上弹出消息框。我如何设置应用程序始终从主屏幕开始,将其设置为Windows中的" 1"。

我还想将应用程序绑定到它在屏幕上显示的屏幕,以便与应用程序在同一屏幕上显示消息框。我想拥有的另一件事是,新表格将显示与以前的表格相同的位置,而不是返回应用程序启动的屏幕。

我应该用什么来控制表格的位置?

我尝试将启动位置更改为 CenterParent ,但这似乎并没有改变任何东西。

启动页面(第一格式(上尝试一下:

private void MyForm_Load(object sender, EventArgs e)
{
        this.Location = Screen.AllScreens[0].WorkingArea.Location;
        this.StartPosition = FormStartPosition.CenterScreen;
}

更多信息在这里:在辅助显示器上显示窗口表格?

这个问题是关于在辅助屏幕上显示程序。如果您使用的答案,只需将1 index更改为阵列上的0即可。

编辑:

只是为了强调 Bryce Wagner 对其他人的评论阅读此问题:

如果您是从表单或用户控件调用它,则需要调用MessageBox.Show(此,"消息"(。

在此处和类似问题中结合所有答案,在主屏幕上显示应用的工作解决方案是:

private void FormLogin_Load(object sender, EventArgs e)
    {
        this.Location = Screen.AllScreens[0].WorkingArea.Location;
        ReallyCenterToScreen();
     }
    protected void ReallyCenterToScreen()
    {
        Screen screen = Screen.FromControl(this);
        Rectangle workingArea = screen.WorkingArea;
        this.Location = new Point()
        {
            X = Math.Max(workingArea.X, workingArea.X + (workingArea.Width - this.Width) / 2),
            Y = Math.Max(workingArea.Y, workingArea.Y + (workingArea.Height - this.Height) / 2)
        };
    }

并将消息框保存在中心屏幕上是:

MessageBox.Show(this, "Message")

来源是@Bryce Wagner的评论,我的问题,@mohamad Shahrestani的答案以及来自 @sarsur.a

的问题答案。

我有一个带有第二个屏幕的笔记本电脑。Windows 10在"扩展"中。模式。没有任何代码示例帮助我的对话框忽略了手动位置。

事实证明,Nvidia对驾驶员有一些有用的选择。一个人会为您决定您想要的表格或对话。如果您的代码似乎没有行为,请尝试"nView Desktop Manager" -> "Windows Manager" -> "Dialog box repositioning"Open windows on设置。

最新更新