在辅助屏幕上居中显示C#窗体

在辅助屏幕上居中显示C#窗体,c#,forms,location,center,screens,C#,Forms,Location,Center,Screens,快速的问题,希望是一个简单的解决办法。 我对C#还不太熟悉,我正试图在第二个窗体打开时将其居中显示在第二个屏幕上。到目前为止,我可以让它在第二个屏幕上打开没有问题,但它位于左上角,我不能让它到中心。我知道,Location=Screen.AllScreens[1].WorkingArea.Location将把它放在所述工作区域的左上角。我想知道是否有一种方法(本质上)将.Location更改为其他不考虑实际屏幕大小的中心位置?这将被应用到多个不同的系统上,屏幕大小各不相同。 这是我目前掌握的代码

快速的问题,希望是一个简单的解决办法。 我对C#还不太熟悉,我正试图在第二个窗体打开时将其居中显示在第二个屏幕上。到目前为止,我可以让它在第二个屏幕上打开没有问题,但它位于左上角,我不能让它到中心。我知道,
Location=Screen.AllScreens[1].WorkingArea.Location将把它放在所述工作区域的左上角。我想知道是否有一种方法(本质上)将
.Location
更改为其他不考虑实际屏幕大小的中心位置?这将被应用到多个不同的系统上,屏幕大小各不相同。 这是我目前掌握的代码

第一种形式

public partial class FrmPrompt : Form
{
    public FrmPrompt()
    {
        InitializeComponent();
    }

    private void ButNo_Click(object sender, EventArgs e)
    {
        frmConfirm confirm = new frmConfirm();
        Screen[] screens = Screen.AllScreens;
        lblConfirmMsg.Text = "Please Wait For Customer To Confirm...";
        butContinue.Hide();
        confirm.Show();
    }
}
关于第二种形式:

public partial class frmConfirm : Form
{
    public frmConfirm()
    {
        InitializeComponent();
        Location = Screen.AllScreens[1].WorkingArea.Location;
    }

    private void pictureBox1_Click(object sender, EventArgs e)
    {
        Application.Exit();
    }
}

谢谢

在第一个表单中尝试此操作,无需在第二个表单中设置任何内容

        //put it after this line: frmConfirm confirm = new frmConfirm();
        confirm.StartPosition = FormStartPosition.CenterScreen;

CenterScreen
将在current屏幕上找到表单,因此如果您的
FrmPrompt
出现在第二个屏幕上,当您单击
但不单击
-这将起作用。但我想这不是你想要的

除此之外,
CenterScreen
将覆盖在Show方法调用之前设置的from位置的任何位置设置。因此,我建议重写
frmConfirm

protected override void OnShown(EventArgs e)
{
    base.OnShown(e);
    var area = Screen.AllScreens[1].WorkingArea;
    var location = area.Location;

    location.Offset((area.Width - Width) / 2, (area.Height - Height) / 2);
    Location = location;
}

没有做你想做的事?如果你阅读了那里写的内容,你会看到不要直接从代码标记调用它如果你将
StartPosition
设置为
CenterScreen
那么表单
位置
将在Show方法调用时被覆盖。这只是将第二个表单放在主显示的中心。我需要它在二次显示器上居中显示。谢谢!我已经找了很久了。帮了大忙!