Перейти к содержимому

Как изменить размер формы в c

  • автор:

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

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

Изменить размер формы можно во время разработки с помощью 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 (начальная форма в этом примере) и Form2 . В Form1 имеется кнопка, которая при нажатии вызывает событие Click . Обработчик этого события создает новый экземпляр формы Form2 , задает размер, а затем отображает его:

private void button1_Click(object sender, EventArgs e)
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 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)
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 свойство было задано во время разработки.

См. также

  • Как добавить форму в проект (Windows Forms .NET)
  • Общие сведения о событиях (Windows Forms .NET)
  • Размещение и компоновка элементов управления (Windows Forms .NET)

Совместная работа с нами на GitHub

Источник этого содержимого можно найти на GitHub, где также можно создавать и просматривать проблемы и запросы на вытягивание. Дополнительные сведения см. в нашем руководстве для участников.

Не меняется размер формы

Стартовая форма в проекте не дает изменить свой размер по высоте, остановившись на значении в 1100 (нужно 1392) точек. При изменении в свойствах минимальный размер не меняется, добавление значений в код не помогает, как и растягивание формы. При этом остальные формы спокойно достигают нужного размера.введите сюда описание изображениявведите сюда описание изображения

Отслеживать
задан 2 окт 2020 в 9:25
13 1 1 бронзовый знак

Если оставить код, как на скриншоте, и попробовать поменять размеры через свойства формы, то значения в коде меняются на те, что в свойствах

2 окт 2020 в 10:11
2 окт 2020 в 10:50

1 ответ 1

Сортировка: Сброс на вариант по умолчанию

Возможно это как-то связано с разрешением вашего экрана. WinForms не такой адаптивный в плане визуализации, он очень привязан к текущей системе. Вот, например, я попытался выставить те же значения для свойств, что у вас, но почему-то минимальный размер падает до 726, а сам размер формы падает до 788. Разрешение моего экрана: 1366×768. Для своих целей лучше используйте WPF.

введите сюда описание изображения

Подключил телевизор с разрешением 1920×1080 к ноутбуку. И вот результат:

введите сюда описание изображения

P.S. В WPF эти же значения выставляются без проблем.

C# Как изменить размер формы без рамки?

ilyatrifonov

Взял со Stackoverflow. Вообще большинство вопросов хорошо гуглится на английском меньше чем за минуту. Первая ссылка по запросу c# resize form without border.

Ответ написан более трёх лет назад
Комментировать
Нравится 1 Комментировать
Дмитрий Ковальский @dmitryKovalskiy
программист средней руки

Изучайте свойства формы, которую вы создаете. Должно быть что-то с названием Resize или Vertical/Horizontal.

Ответ написан более трёх лет назад
Комментировать
Нравится Комментировать

Давно хотел применять в своих приложениях что-то подобное, но вот win32 как-то все не удается освоить.
И вот думаю: «Надо же когда-то начинать. » Пошел в Build desktop Windows apps using the Win32 API, потом в WM_NCHITTEST message. но это же бездна! И чтобы успокоиться, хоть какой-то прок поиметь и не забыть через месяц, взял за основу пример ответа, налепил на него то, что нашел и объяснил — как понял:

public partial class Form1 : Form < public Form1() < InitializeComponent(); this.FormBorderStyle = FormBorderStyle.None; this.DoubleBuffered = true; this.SetStyle(ControlStyles.ResizeRedraw, true); >// Внутри клиентской области окна создаем витруальную изменяемую рамку окна. // Она состоит из 6 функциональных областей: заголовка, верхней, нижней, левой, правой рамок // и области в правом нижнем углу, перетаскивание которой изменяет размеры окна по диагонали private const int ВысотаЗаголовка = 32; private const int ВысотаВерхнейРамки = 5; private const int ВысотаНижнейРамки = 5; private const int ШиринаПравойРамки = 5; private const int ШиринаЛевойРамки = 5; private const int СторонаКвадратаВПравомНижнемУглу = 16; protected override void OnPaint(PaintEventArgs e) < // Рисуем пиктограмму ручки изменения размеров окна по диагонали Rectangle rc = new Rectangle(ClientSize.Width - СторонаКвадратаВПравомНижнемУглу, ClientSize.Height - СторонаКвадратаВПравомНижнемУглу, СторонаКвадратаВПравомНижнемУглу, СторонаКвадратаВПравомНижнемУглу); ControlPaint.DrawSizeGrip(e.Graphics, BackColor, rc); // Раскрашиваем заголовок //rc = new Rectangle(0, 0, this.ClientSize.Width, ВысотаЗаголовка); //e.Graphics.FillRectangle(Brushes.DarkBlue, rc); >protected override void WndProc(ref Message m) < if (m.Msg == 0x84) < // Trap WM_NCHITTEST // Рассчитываем координаты курсора относительно клиентской области окна Point pos = new Point(m.LParam.ToInt32() & 0xffff, m.LParam.ToInt32() >> 16); pos = this.PointToClient(pos); // Назначаем нашу функциональность области окна в которой находится курсор // с тем, чтобы вызвавший произвел с окном соответствующие этой функциональности действия if (pos.Y = ВысотаВерхнейРамки) < m.Result = (IntPtr)2; // HTCAPTION - курсор в заголовке окна return; >if (pos.Y if (pos.Y >= ClientSize.Height - ВысотаНижнейРамки && pos.X < ClientSize.Width - СторонаКвадратаВПравомНижнемУглу) < m.Result = (IntPtr)15; // HTBOTTOM - курсор в нижней горизонтальной рамке окна return; >if (pos.X >= ClientSize.Width - ШиринаПравойРамки && pos.Y < ClientSize.Height - СторонаКвадратаВПравомНижнемУглу) < m.Result = (IntPtr)11; // HTRIGHT - курсор в правой вертикальной рамке окна return; >if (pos.X if (pos.X >= ClientSize.Width - СторонаКвадратаВПравомНижнемУглу && pos.Y >= ClientSize.Height - СторонаКвадратаВПравомНижнемУглу) < m.Result = (IntPtr)17; // HTBOTTOMRIGHT - курсор в пиктограмме ручки изменения размера окна по диагонали return; >> base.WndProc(ref m); > >

Практическое руководство. Изменение размера формы в Windows Forms

Размер формы Windows Forms можно указать несколькими способами. Вы можете изменить высоту и ширину формы программными средствами, задав новое значение для свойства Size или изменив свойства Height или Width по отдельности. Если используется Visual Studio, вы можете изменить размеры с помощью конструктора Windows Forms. См. также Практическое руководство. Изменение размера формы Windows Forms в конструкторе.

Изменение размера формы программными средствами

Чтобы определить размер формы во время выполнения, задайте свойство Size формы.

В примере кода ниже размер формы устанавливается равным 100 × 100 пикселей.

Form1.Size = New System.Drawing.Size(100, 100) 
Form1.Size = new System.Drawing.Size(100, 100); 
Form1->Size = System::Drawing::Size(100, 100); 

Изменение ширины и высоты формы программными средствами

Определив свойство Size, измените высоту или ширину формы с помощью свойств Width или Height.

В примере кода ниже для ширины формы устанавливается значение 300 пикселей, отсчитываемое от левого края формы. Высота остается неизменной.

Form1.Width = 300 
Form1.Width = 300; 
Form1->Width = 300; 

Измените Width или Height, задав свойство Size.

Однако в примере ниже показано, что этот подход является более громоздким, чем просто задание свойств Width или Height.

Form1.Size = New Size(300, Form1.Size.Height) 
Form1.Size = new Size(300, Form1.Size.Height); 
Form1->Size = System::Drawing::Size(300, Form1->Size.Height); 

Изменение размера формы с шагом программными средствами

Для увеличения размера формы задайте свойства Width или Height.

В примере ниже ширина формы увеличивается на 200 пикселей по сравнению с первоначальным значением.

Form1.Width += 200 
Form1.Width += 200; 
Form1->Width += 200; 

Всегда используйте свойство Height или Width для изменения размеров формы, если вы не устанавливаете значения высоты и ширины одновременно, присваивая свойству Size новую структуру Size. Свойство Size возвращает структуру Size, которая является типом значения. Присвоить новое значение свойству типа значения нельзя. Поэтому приведенный ниже пример кода компилироваться не будет.

' NOTE: CODE WILL NOT COMPILE Dim f As New Form() f.Size.Width += 100 
// NOTE: CODE WILL NOT COMPILE Form f = new Form(); f.Size.Width += 100; 
// NOTE: CODE WILL NOT COMPILE Form^ f = gcnew Form(); f->Size->X += 100; 

См. также

  • Приступая к работе с Windows Forms
  • Усовершенствование приложений Windows Forms

Совместная работа с нами на GitHub

Источник этого содержимого можно найти на GitHub, где также можно создавать и просматривать проблемы и запросы на вытягивание. Дополнительные сведения см. в нашем руководстве для участников.

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *