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