在辅助屏幕上居中 C# 窗体
Center C# form on secondary screen
小问题,希望能轻松解决。
我是 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
将在 当前 屏幕上找到表单,因此如果您的 FrmPrompt
在第二个屏幕上,当您单击 ButNo
- 这将工作。不过我觉得这不是你要的
除此之外,CenterScreen
将覆盖 在 显示方法调用之前设置的任何位置设置.所以我建议覆盖 frmConfirm
的 OnShown 方法
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;
}
小问题,希望能轻松解决。
我是 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
将在 当前 屏幕上找到表单,因此如果您的 FrmPrompt
在第二个屏幕上,当您单击 ButNo
- 这将工作。不过我觉得这不是你要的
除此之外,CenterScreen
将覆盖 在 显示方法调用之前设置的任何位置设置.所以我建议覆盖 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;
}