Поделиться через


Как расположить форму и изменить ее размер (Windows Forms .NET)

При создании формы размер и расположение изначально задаются как значения по умолчанию. Размер формы по умолчанию обычно имеет ширину и высоту 800 x 500 пикселей. Начальное расположение, отображаемое при отображении формы, зависит от нескольких различных параметров.

Изменить размер формы можно во время разработки с помощью Visual Studio, а также во время выполнения с помощью кода.

Изменение размера с помощью конструктора

После добавления новой формы в проект размер формы задается двумя разными способами. Во-первых, его можно задать с помощью сцепок размера в конструкторе. Перетаскивая правый край, нижний край или угол, можно изменить размер формы.

Щелкните правой кнопкой мыши Обозреватель решений, чтобы добавить в проект Windows Forms новую форму с маркерами изменения размера

Второй способ изменения размера формы — в конструкторе на панели "Свойства". Выберите форму, а затем найдите панель Свойства в Visual Studio. Прокрутите вниз до раздела Размер и разверните его. Можно вручную задать параметры Ширина и Высота.

Щелкните правой кнопкой мыши Обозреватель решений, чтобы добавить новую форму в проект Windows Forms

Изменение размера в коде

Несмотря на то, что начальный размер формы задается в конструкторе, его можно изменить с помощью кода. Использование кода для изменения размера формы полезно, когда в каком-либо приложении размера формы по умолчанию недостаточно.

Чтобы изменить размер формы, измените свойство 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 (начальная форма в этом примере) и 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 с выделенным начальным положением

Перечисление FormStartPosition Description
CenterParent Форма находится в пределах родительской формы.
CenterScreen Форма располагается по центру текущего экрана.
Руководство Положение формы определяется свойством Расположение.
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 (начальная форма в этом примере) и 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 свойство было задано во время разработки.

См. также