我想在单击按钮时生成一个表单,它应该位于屏幕的中心。所以我编写了以下代码片段。
private void ord_Click(object sender, EventArgs e)
{
this.StartPosition = FormStartPosition.CenterScreen;
this.Size = new Size(1308,599);
this.Show();
}
但是当我点击按钮窗口增长但窗口的一半看不到时。这就是图片。
我怎样摆脱这个问题。?
我的代码出了什么问题?
答案 0 :(得分:1)
您可以使用PrimaryScreen
类的Screen
属性。
//this.StartPosition = FormStartPosition.CenterScreen;
//this.Show();
忽略您编写的这些行,除了设置表单的Size
属性:
private void ord_Click(object sender, EventArgs e)
{
this.Size = new Size(1308,599);
CenterForm();
}
创建一个名为CenterForm()
的方法,该方法将设置表单的新位置。您可以通过在按钮单击事件中调用此方法来实现此目的。
private void CenterForm()
{
int getWidth = Screen.PrimaryScreen.Bounds.Width;
int getHeight = Screen.PrimaryScreen.Bounds.Height;
int X = getWidth - this.Width;
int Y = getHeight - this.Height;
this.Location = new Point(X / 2, Y / 2);
}
注意: 当表单大小发生变化时,请始终记住anchor您的控件。
答案 1 :(得分:1)
您必须计算 Size
和Location
:
private void ord_Click(object sender, EventArgs e) {
// Ensure that suggested form size doesn't exceed the screen width and height
this.Size = new System.Drawing.Size(
Screen.GetWorkingArea(this).Width >= 1308 ? 1308 : Screen.GetWorkingArea(this).Width,
Screen.GetWorkingArea(this).Height >= 599 ? 599 : Screen.GetWorkingArea(this).Height);
// locate the form in the center of the working area
this.Location = new System.Drawing.Point(
(Screen.GetWorkingArea(this).Width - Width) / 2,
(Screen.GetWorkingArea(this).Height - Height) / 2);
}