フォームの位置とサイズを設定する方法 (Windows フォーム .NET)

フォームが作成されると、サイズと位置は最初に既定値に設定されます。 フォームの既定のサイズの幅と高さは、通常、800x500 ピクセルです。 フォームが表示されるときの最初の位置は、いくつかの異なる設定によって異なります。

フォームのサイズは、デザイン時に Visual Studio を使用して変更したり、実行時にコードを使用して変更したりできます。

重要

.NET 7 と .NET 6 用のデスクトップ ガイド ドキュメントは作成中です。

デザイナーでサイズを変更する

プロジェクトに新しいフォームを追加した後、フォームのサイズは 2 つの異なる方法で設定されます。 まず、デザイナーでサイズ グリップを使用して設定できます。 右端、下端、または角をドラッグすることで、フォームのサイズを変更できます。

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

デザイナーが開いている間にフォームのサイズを変更する 2 番目の方法は、プロパティ ペインを使用することです。 フォームを選択し、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

別のフォームのサイズを変更する

別のフォームを作成した後、フォームを参照する変数を使用して、そのサイズを変更できます。 たとえば、2 つのフォーム Form1 (この例でのスタートアップ フォーム) と Form2 があるとします。 Form1 には、クリックされると 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 列挙型 説明
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

別のフォームを配置する

別のフォームを作成した後、フォームを参照する変数を使用して、その位置を変更できます。 たとえば、2 つのフォーム Form1 (この例でのスタートアップ フォーム) と Form2 があるとします。 Form1 には、クリックされると 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 プロパティの設定に基づいて決まります。

関連項目