通过按钮单击增长窗体

时间:2016-08-27 18:48:37

标签: c# winforms

我想在单击按钮时生成一个表单,它应该位于屏幕的中心。所以我编写了以下代码片段。

private void ord_Click(object sender, EventArgs e)
{
    this.StartPosition = FormStartPosition.CenterScreen;
    this.Size = new Size(1308,599);                
    this.Show(); 
}

但是当我点击按钮窗口增长但窗口的一半看不到时。这就是图片。

GUI after growing

我怎样摆脱这个问题。?

我的代码出了什么问题?

2 个答案:

答案 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)

您必须计算 SizeLocation

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);
}