如何定位窗体并重设其大小(Windows 窗体 .NET)

创建窗体时,大小和位置最初设置为默认值。 窗体的默认大小通常为 800x500 像素的宽度和高度。 显示窗体时的初始位置取决于一些不同的设置。

可以在设计时使用 Visual Studio 更改窗体的大小,也可以在运行时使用代码更改窗体的大小。

重要

面向 .NET 7 和 .NET 6 的桌面指南文档正在撰写中。

使用设计器重设大小

在将新窗体添加到项目后,可以通过两种不同的方式来设置窗体的大小。 第一种方式是,使用设计器中的大小调整手柄来设置窗体大小。 通过拖动右边缘、底边缘或角,可以调整窗体的大小。

Right click solution explorer to add new form to windows forms project with grips

在设计器处于打开状态时,第二种重设窗体大小的方法是通过“属性”窗格。 选择窗体,然后在 Visual Studio 中找到“属性”窗格。 向下滚动至“大小”并将其展开。 可以手动设置“宽度”和“高度”

Right click solution explorer to add new form to windows forms project

在代码中重设大小

尽管设计器会设置窗体的起始大小,也可以通过代码来重设窗体大小。 当应用程序的某些相关内容确定窗体的默认大小不够时,使用代码来调整窗体的大小很有用。

若要重设窗体的大小,请更改 Size,它表示窗体的宽度和高度。

重设当前窗体的大小

只要代码在窗体的上下文中运行,就可以更改当前窗体的大小。 例如,如果 Form1 上有一个按钮,则单击该按钮时,将调用 Click 事件处理程序来重设窗体的大小:

private void button1_Click(object sender, EventArgs e) =>
    Size = new Size(250, 200);
Private Sub Button1_Click(sender As Object, e As EventArgs)
    Size = New Drawing.Size(250, 200)
End Sub

重设其他窗体的大小

创建其他窗体后,可以使用引用该窗体的变量来更改其大小。 例如,假设有两个窗体:Form1(在本示例中为启动窗体)和 Form2Form1 有一个按钮,单击该按钮时,将调用 Click 事件。 此事件的处理程序创建 Form2 窗体的新实例、设置大小,然后显示该实例:

private void button1_Click(object sender, EventArgs e)
{
    Form2 form = new Form2();
    form.Size = new Size(250, 200);
    form.Show();
}
Private Sub Button1_Click(sender As Object, e As EventArgs)
    Dim form = New Form2 With {
        .Size = New Drawing.Size(250, 200)
    }
    form.Show()
End Sub

如果未手动设置 Size,则窗体的默认大小即在设计时设置的大小。

使用设计器定位

创建并显示窗体实例时,窗体的初始位置由 StartPosition 属性决定。 Location 属性保存窗体的当前位置。 可以通过设计器设置这两个属性。

visual studio properties pane with start position highlighted

FormStartPosition Enum 说明
CenterParent 窗体在父窗体的边界内居中。
CenterScreen 窗体在当前显示屏中居中。
手动 窗体的位置由 Location 属性决定。
WindowsDefaultBounds 窗体位于 Windows 默认位置,且大小重设为 Windows 决定的默认大小。
WindowsDefaultLocation 窗体位于 Windows 默认位置,没有重设大小。

CenterParent 值仅适用于多文档界面 (MDI) 子窗体或使用 ShowDialog 方法显示的常规窗体。 CenterParent 不影响使用 Show 方法显示的常规窗体。 若要让某个窗体(form 变量)相对于另一个窗体(parentForm 变量)居中,请使用以下代码:

form.StartPosition = FormStartPosition.Manual;
form.Location = new Point(parentForm.Width / 2 - form.Width / 2 + parentForm.Location.X,
                          parentForm.Height / 2 - form.Height / 2 + parentForm.Location.Y);
form.Show();
form.StartPosition = Windows.Forms.FormStartPosition.CenterParent.Manual
form.Location = New Drawing.Point(parentForm.Width / 2 - form.Width / 2 + parentForm.Location.X,
                                  parentForm.Height / 2 - form.Height / 2 + parentForm.Location.Y)

form.Show()

使用代码定位

尽管可以使用设计器来设置窗体的起始位置,也可以使用代码来更改起始位置模式或手动设置位置。 如果需要相对于屏幕或其他窗体手动定位窗体并重设其大小,则使用代码来定位窗体非常有用。

移动当前窗体

只要代码在窗体的上下文中运行,就可以移动当前窗体。 例如,如果 Form1 上有一个按钮,则单击该按钮时,将调用 Click 事件处理程序。 此示例中的处理程序通过设置 Location 属性将窗体的位置更改为屏幕的左上角:

private void button1_Click(object sender, EventArgs e) =>
    Location = new Point(0, 0);
Private Sub Button1_Click(sender As Object, e As EventArgs)
    Location = New Drawing.Point(0, 0)
End Sub

定位其他窗体

创建其他窗体后,可以使用引用该窗体的变量来更改其位置。 例如,假设有两个窗体:Form1(在本示例中为启动窗体)和 Form2Form1 有一个按钮,单击该按钮时,将调用 Click 事件。 此事件的处理程序创建 Form2 窗体的新实例并设置位置:

private void button1_Click(object sender, EventArgs e)
{
    Form2 form = new Form2();
    form.Location = new Point(0, 0);
    form.Show();
}
Private Sub Button1_Click(sender As Object, e As EventArgs)
    Dim form = New Form2 With {
        .Location = New Drawing.Point(0, 0)
    }
    form.Show()
End Sub

如果未设置 Location,则窗体的默认位置基于 StartPosition 属性在设计时的设置。

另请参阅