17

如何在运行时更改窗口窗体大小?

我看到了一些例子,但每个例子都需要 Form.Size 属性。这个属性可以在这里设置:http: //msdn.microsoft.com/en-us/library/25w4thew.aspx#Y456,但我已经在可视化工具中创建了我的应用程序表单,并且表单是这样创建的:

static void Main()
{
    Application.Run(new Form());
}

我如何设置该Size属性,然后通过Form.HeightandForm.Width方法更改它?

4

7 回答 7

39

您不能更改 Form 的 Width 和 Height 属性,因为它们是只读的。您可以像这样更改表单的大小:

button1_Click(object sender, EventArgs e)
{
    // This will change the Form's Width and Height, respectively.
    this.Size = new Size(420, 200);
}
于 2012-10-25T08:23:37.057 回答
11

如果您想以编程方式操作表单,最简单的解决方案是保留对它的引用:

static Form myForm;

static void Main()
{
    myForm = new Form();
    Application.Run(myForm);
}

然后,您可以在运行时使用它来更改大小(或您想做的其他事情)。尽管正如箭头指出的那样,您不能直接设置WidthandHeight而必须设置Size属性。

于 2012-10-25T08:16:57.220 回答
4

为了调用它,您必须存储对表单的引用并将引用传递给 run 方法。然后你可以在 actionhandler 中调用它。

public partial class Form1 : Form
{
    public void ChangeSize(int width, int height)
    {
        this.Size = new Size(width, height);
    }
}
于 2012-10-25T08:16:42.650 回答
2

您可以通过在要更改大小的地方执行以下操作来更改表单的高度(将“10”替换为您的大小):

this.Height = 10;

这也可以通过宽度来完成:

this.Width = 10;
于 2016-08-12T11:51:46.360 回答
0

像这样的东西对我来说很好:

public partial class Form1 : Form
{
    Form mainFormHandler;
...
}

private void Form1_Load(object sender, EventArgs e){
    mainFormHandler = Application.OpenForms[0];
   //or instead use this one:
   //mainFormHandler = Application.OpenForms["Form1"];
}

然后你可以改变大小如下:

mainFormHandler.Width = 600;
mainFormHandler.Height= 400;

或者

mainFormHandler.Size = new Size(600, 400);

另一个有用的点是,如果你想改变mainForm另一个的大小Form,你可以简单地使用属性来设置大小。

于 2018-02-07T13:00:53.053 回答
0

作为对上述答案的补充;不要忘记 Form MinimumSize 属性,以防您需要创建更小的表单。

示例如下:

private void SetDefaultWindowSize()
{
   int sizeW, sizeH;
   sizeW = 180;
   sizeH = 100;

   var size = new Size(sizeW, sizeH);

   Size = size;
   MinimumSize = size;
}

private void SetNewSize()
{
   Size = new Size(Width, 10);
}
于 2020-10-09T15:06:45.737 回答
0

试试 this.ClientSize 而不是 this.Size:

private void Form1_Load(object sender, EventArgs e)
{
   this.ClientSize = new Size(mywidth, myheight);
}

为我工作。

于 2021-10-06T17:42:09.120 回答