Как расположить форму и изменить ее размер (Windows Forms .NET)
При создании формы размер и расположение изначально задаются как значения по умолчанию. Размер формы по умолчанию обычно имеет ширину и высоту 800 x 500 пикселей. Начальное расположение, отображаемое при отображении формы, зависит от нескольких различных параметров.
Изменить размер формы можно во время разработки с помощью Visual Studio, а также во время выполнения с помощью кода.
Документация по рабочему столу для .NET 7 и .NET 6 находится в стадии разработки.
Изменение размера с помощью конструктора
После добавления новой формы в проект размер формы задается двумя разными способами. Во-первых, для него можно задать маркеры изменения размера в конструкторе. Перетаскивая правый край, нижний край или угол, можно изменить размер формы.
Второй способ изменения размера формы — в конструкторе на панели «Свойства». Выберите форму, а затем найдите панель Свойства в Visual Studio. Прокрутите вниз до раздела Размер и разверните его. Можно вручную задать параметры Ширина и Высота.

Изменение размера в коде
Несмотря на то, что начальный размер формы задается в конструкторе, его можно изменить с помощью кода. Использование кода для изменения размера формы полезно, когда в каком-либо приложении размера формы по умолчанию недостаточно.
Чтобы изменить размер формы, измените свойство 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 содержит текущее положение в форме. Оба свойства можно задать с помощью конструктора.

| Перечисление 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, где также можно создавать и просматривать проблемы и запросы на вытягивание. Дополнительные сведения см. в нашем руководстве для участников.
.NET Desktop feedback
The .NET Desktop documentation is open source. Provide feedback here.
Обратная связь
Отправить и просмотреть отзыв по
Изменение формы уже готовой программы
Добрый день!
Проблема вот в чём — понадобилось изменить уже готовую программу и добавить кнопку в контекстное меню, вызываемое по нажатию на элемент правой кнопкой мыши и, соответственно, код к нему.
По сути, мне в первую очередь интересны ресурсы, через которые можно это реализовать и каким образом.
По сети поползал, но найти решение так и не смог, так что уповаю только на вашу помощь.
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
Ответы с готовыми решениями:
Небольшое изменение уже готовой сети
Добрый день:) не думаю что вопрос покажется сложным для гуру! Так вот, уже есть готовая сеть, мне.
Описание уже готовой программы
Программа написана на Delphi 7. Необходимо описать основные модули и инструкцию пользователю!
Изменение готовой программы
Здравствуйте, сразу хочу сказать — С++ для меня неизведанная область, но вопрос, всё же задам.
Изменение ресурсов готовой программы (exe)
Здравствуйте уважаемые программисты, сисадмины и просто пользователи. Есть небольшая (я так думаю).
Регистрация: 27.03.2019
Сообщений: 2
Итак, пока ещё никто не ответил, но сам я накопал следующее — с помощью утилиты NET Reflector можно декомпилировать проект и уже работать с ним через visual studio. Осталось найти где хранится контекстное меню и как его поменять. Буду благодарен, если можете подсказать.
Регистрация: 23.10.2017
Сообщений: 43
Информация об элементах формы хранится в файле типа: Form1.Designer.cs
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
Помогаю со студенческими работами здесь
Создание готовой программы из готовой базы данных
Добрый день. Есть полностью готовая база данных с таблицами, формами, отчетами. Короче полностью.
Delphi комментарии к уже готовой программе
Программа ищет буквы которые в слове встречаются один раз. Напишите полный комментарий пожалуйста.

Как привязать представление к уже готовой форме?:)
Есть форма для регистрации пользователя : <form "> <input.
Недопустимый идентификатор

Идентификатор 123456789/189579/1/Язык программирования C не соответствует правильному Файл ЭБ. Это могло произойти по одной из следующих причин:
- URL текущей страницы неверен. Если Вы попали сюда извне ЭБ, то, возможно, адрес набран неправильно или поврежден.
- Вы ввели недопустимый ID в форму — пожалуйста, повторите попытку.
Если у Вас возникли проблемы или Вы считаете, что ID должен работать, то свяжитесь с администраторами сайта.
Размещение и компоновка элементов управления (Windows Forms .NET)
Размещение элементов управления в Windows Forms определяется не только элементом управления, но и родительским элементом управления. В этой статье описываются различные параметры элементов управления, а также различные типы родительских контейнеров, которые влияют на компоновку.
Документация по рабочему столу для .NET 7 и .NET 6 находится в стадии разработки.
Фиксированное расположение и размер
Расположение на родительском элементе определяется значением свойства Location относительно левого верхнего угла поверхности родительского элемента управления. Координата верхнего левого угла в родительском элементе — (x0,y0) . Размер элемента управления определяется свойством Size и представляет ширину и высоту элемента управления.

При добавлении элемента управления на родительский элемент, который применяет автоматическое размещение, положение и размер элемента управления изменяются. В этом случае в зависимости от типа родительского элемента скорректировать расположение и размер элемента управления вручную не удастся.
Свойства MaximumSize и MinimumSize помогают задать минимальное и максимальное пространство, которое может использовать элемент управления.
Поля и заполнение
Два свойства элементов управления помогают точно размещать элементы управления: Margin и Padding.
Свойство Margin определяет поле вокруг элемента управления, благодаря которому обеспечивается определенное расстояние между границами этого элемента и другими элементами.
Свойство Padding определяет поле внутри элемента управления, благодаря которому обеспечивается определенное расстояние между содержимым элемента управления (например, значением свойства Text) и его границами.
На рисунке ниже демонстрируется значение свойств Margin и Padding элемента управления.

Конструктор Visual Studio учитывает эти свойства при размещении и изменении размера элементов управления. Линии привязки отображаются в виде направляющих, которые помогут вам оставаться за пределами указанного поля элемента управления. Например, Visual Studio отображает линию привязки при протаскивании элемента управления рядом с другим элементом управления:
Автоматическое размещение и размер
Элементы управления могут размещаться в родительском элементе автоматически. Некоторые родительские контейнеры выполняют размещение принудительно, в то время как другие используют параметры управления, определяющие размещение. Существует два свойства элемента управления, которые помогают автоматически размещать и изменять размер в пределах родительского элемента: Dock и Anchor.
На автоматическое размещение может влиять порядок отображения. Порядок, в котором отображается элемент управления, определяется индексом элемента управления в коллекции Controls родительского элемента. Этот индекс называется Z-order. Каждый элемент управления отображается в порядке, в котором он представлен в коллекции. Это означает, что первый элемент в коллекции отображается последним, а последний элемент — первым.
Свойства MinimumSize и MaximumSize помогают задать минимальное и максимальное пространство, которое может использовать элемент управления.
Закрепить
Свойство Dock задает, какая граница элемента управления выравнивается по соответствующей стороне родительского элемента и как изменяется размер элемента управления в пределах родительского элемента.

Когда элемент управления закреплен, контейнер определяет пространство, которое он должен занимать, а затем соответствующим образом изменяет размер элемента управления и помещает его. Ширина и высота элемента управления по-прежнему соблюдаются с учетом стиля закрепления. Например, если элемент управления закреплен в верхней части, Height элемента управления соблюдается, тогда как Width корректируется автоматически. Если элемент управления закреплен слева, Width элемента управления соблюдается, тогда как Height корректируется автоматически.
Location элемента управления нельзя задать вручную, поскольку при закреплении элемента управления его положение контролируется автоматически.
Индекс Z-order элемента управления влияет на закрепление. После размещения закрепленных элементов управления они занимают выделенное для них пространство. Например, если элемент управления отображается первым и закрепляется в верхней части, он займет всю ширину контейнера. Если следующий элемент управления закреплен слева, ему будет выделено меньше свободного места.

При изменении индекса Z-order доступное начальное пространство элемента управления, закрепленного слева, будет больше. Элемент управления использует всю высоту контейнера. Элемент управления, закрепленный вверху, имеет меньше свободного места.

По мере расширения и сжатия контейнера элементы управления, закрепленные в контейнере, перемещаются и изменяют свой размер для сохранения заданных параметров.
Если на одной стороне контейнера закреплены несколько элементов управления, они группируются в соответствии с их индексами Z-order.

Привязка
Привязка элемента управления позволяет привязать элемент управления к одной или нескольким сторонам родительского контейнера. По мере изменения размера контейнера любой дочерний элемент управления будет сохранять заданное расстояние до привязанной стороны.
Элемент управления можно привязать к одной или нескольким сторонам без ограничений. Привязка задается свойством Anchor.
Автоматическое изменение размеров
Свойство AutoSize позволяет элементу управления изменять свой размер, если это необходимо, в соответствии с размером, заданным свойством PreferredSize. Изменение размеров конкретных элементов управления регулируется заданием свойства AutoSizeMode .
Свойство AutoSize поддерживают только некоторые элементы управления. Кроме того, некоторые элементы управления, поддерживающие свойство AutoSize, также поддерживают свойство AutoSizeMode .
Свойство AutoSizeMode
Свойство AutoSizeMode обеспечивает более детализированный контроль над поведением AutoSize по умолчанию. Свойство AutoSizeMode указывает, как элемент управления изменяет свой размер в соответствии с содержимым. Например, содержимым может быть текст для элемента управления Button или дочерние элементы управления для контейнера.
В следующем списке показаны значения свойства AutoSizeMode и его поведение.
- AutoSizeMode.GrowAndShrink Размеры элемента управления увеличиваются или уменьшаются по размеру его содержимого. Значения MinimumSize и MaximumSize учитываются, но текущее значение свойства Size игнорируется. Это то же поведение, что и у элементов управления со свойством AutoSize и без свойства AutoSizeMode .
- AutoSizeMode.GrowOnly Размеры элемента управления могут увеличиваться по размерам его содержимого, однако они не уменьшаются до значения, меньшего заданного свойством Size. Это значение по умолчанию для AutoSizeMode .
Элементы управления, поддерживающие свойство AutoSize
В следующей таблице описывается уровень поддержки автоматического изменения размера элементами управления:
| Элемент управления | AutoSize поддерживается | AutoSizeMode поддерживается |
|---|---|---|
| Button | ✔️ | ✔️ |
| CheckedListBox | ✔️ | ✔️ |
| FlowLayoutPanel | ✔️ | ✔️ |
| Form | ✔️ | ✔️ |
| GroupBox | ✔️ | ✔️ |
| Panel | ✔️ | ✔️ |
| TableLayoutPanel | ✔️ | ✔️ |
| CheckBox | ✔️ | ❌ |
| DomainUpDown | ✔️ | ❌ |
| Label | ✔️ | ❌ |
| LinkLabel | ✔️ | ❌ |
| MaskedTextBox | ✔️ | ❌ |
| NumericUpDown | ✔️ | ❌ |
| RadioButton | ✔️ | ❌ |
| TextBox | ✔️ | ❌ |
| TrackBar | ✔️ | ❌ |
| CheckedListBox | ❌ | ❌ |
| ComboBox | ❌ | ❌ |
| DataGridView | ❌ | ❌ |
| DateTimePicker | ❌ | ❌ |
| ListBox | ❌ | ❌ |
| ListView | ❌ | ❌ |
| MaskedTextBox | ❌ | ❌ |
| MonthCalendar | ❌ | ❌ |
| ProgressBar | ❌ | ❌ |
| PropertyGrid | ❌ | ❌ |
| RichTextBox | ❌ | ❌ |
| SplitContainer | ❌ | ❌ |
| TabControl | ❌ | ❌ |
| TabPage | ❌ | ❌ |
| TreeView | ❌ | ❌ |
| WebBrowser | ❌ | ❌ |
| ScrollBar | ❌ | ❌ |
AutoSize в среде разработки
В таблице ниже описывается, как изменяется размер элемента управления во время разработки в зависимости от значений свойств AutoSize и AutoSizeMode .
Чтобы указать, что размер элемента управления должен изменяться пользователем, переопределите свойство SelectionRules. В следующей таблице фраза «не удается изменить размер» означает лишь Moveable, а фраза «может изменять размер» — AllSizeable и Moveable.
С целью повышения производительности конструктор Windows Forms в Visual Studio затемняет свойство AutoSize класса Form. Во время разработки форма ведет себя так, как будто свойство AutoSize имеет значение false , независимо от его фактического значения. Во время выполнения никакие особые правила не применяются, и свойство AutoSize действует в соответствии со своим значением.
Контейнер: форма
Form является основным объектом Windows Forms. Формы обычно всегда отображаются в приложении Windows Forms. Формы содержат элементы управления и учитывают свойства Location и Size элемента управления для размещения вручную. Формы также учитывают свойство Dock для автоматического размещения.
Как правило, на краях формы имеются маркеры, позволяющие пользователю изменить ее размер. Свойство Anchor элемента управления позволяет увеличивать и уменьшать размер элемента управления при изменении размера формы.
Контейнер: панель
Элемент управления Panel аналогичен форме в том, что он просто группирует элементы управления вместе. Он поддерживает те же стили автоматического размещения, что и форма. Дополнительные сведения см. в разделе «Контейнер: форма «.
Панель сливается с родительским элементом и обрезает все области элемента управления, находящиеся за границами панели. Если элемент управления выходит за границы панели, а свойство AutoScroll имеет значение true , появляются полосы прокрутки, с помощью которых пользователь может прокручивать панель.
В отличие от группы панель не содержит заголовок и границу.

На изображении выше показана панель с заданным свойством BorderStyle, чтобы продемонстрировать границы панели.
Контейнер: поле группы
Элемент управления GroupBox предоставляет возможность идентифицируемой группировки других элементов управления. Как правило, группа используется для разделения формы на функциональные области. Например, у вас может быть форма для ввода персональных данных, в которой следует сгруппировать поля, связанные с адресом. Во время разработки можно с легкостью переместить группу вместе со всеми содержащимися в ней элементами управления.
Группа поддерживает те же стили автоматического размещения, что и форма. Дополнительные сведения см. в разделе «Контейнер: форма «. Группа также обрезает любую часть элемента управления, которая выходит за пределы панели.
В отличие от панели, в группе нет возможности прокрутить содержимого и нет полос прокрутки.

Контейнер: макет потока
Элемент управления FlowLayoutPanel упорядочивает свое содержимое в горизонтальном или вертикальном направлении. Его содержимое может переноситься из одной строки или столбца в следующую строку или столбец. Кроме того, вместо переноса содержимое может обрезаться.
Чтобы определить направление содержимого, задайте свойство FlowDirection. Содержимое элемента управления FlowLayoutPanel размещается правильно при использовании направления справа налево. С помощью свойства WrapContents можно указать, должно ли содержимое элемента управления FlowLayoutPanel переноситься или обрезаться.
Если свойству AutoSize присвоено значение true , размер элемента управления FlowLayoutPanel автоматически изменяется в соответствии с содержимым. Дочерние элементы управления также получают свойство FlowBreak . Если свойству FlowBreak присвоено значение true , элементы управления внутри элемента FlowLayoutPanel перестают размещаться в текущем направлении и переносятся на следующую строку или в следующий столбец.

На изображении выше представлены два элемента управления FlowLayoutPanel с заданным свойством BorderStyle, чтобы продемонстрировать границы панели.
Контейнер: макет таблицы
Элемент управления TableLayoutPanel упорядочивает содержимое в сетке. Так как макет строится как во время разработки, так и во время выполнения, его можно изменять динамически по мере изменения среды приложения. Это позволяет пропорционально изменять размер элементов управления на панели с учетом изменений, например изменения размера родительского элемента управления или изменения длины текста в результате локализации.
Любой элемент управления Windows Forms, включая другие экземпляры TableLayoutPanel, может быть дочерним относительно элемента TableLayoutPanel. Это позволяет создавать сложные макеты, динамически меняющиеся во время выполнения.
Также можно управлять направлением расширения элемента управления TableLayoutPanel (горизонтальное или вертикальное) после его заполнения дочерними элементами управления. По умолчанию элемент управления TableLayoutPanel развертывается вниз путем добавления строк.
Для изменения размера и стиля строк и столбцов можно использовать свойства RowStyles и ColumnStyles. Свойства строк и столбцов можно задавать по отдельности.
Элемент управления TableLayoutPanel добавляет следующие свойства в свои дочерние элементы управления: Cell , Column , Row , ColumnSpan и RowSpan .

На изображении выше показана таблица с заданным свойством CellBorderStyle, чтобы продемонстрировать границы каждой ячейки.
Контейнер: разделение контейнера
Элемент управления Windows Forms SplitContainer состоит из двух панелей, разделенных подвижной полосой. При наведении указателя мыши на полосу его форма изменяется, показывая, что полоса является перемещаемой.
С помощью элемента управления SplitContainer можно создавать сложные пользовательские интерфейсы. Часто выбор на одной панели определяет объекты, представленные на другой. Такой подход является эффективным для отображения и просмотра информации. Две панели позволяют группировать информацию, а полоса или разделитель упрощают изменение размера панелей.

На изображении выше имеется контейнер разбиения для создания левой и правой областей. В правой панели содержится второй контейнер разбиения, для которого свойству Orientation задано значение Vertical. Свойство BorderStyle задается, чтобы продемонстрировать границы каждой панели.
Контейнер: элемент управления TAB
Элемент управления TabControl используется для отображения нескольких вкладок, аналогичных разделителям в записной книжке или меткам в наборе папок в картотеке. Вкладки могут содержать изображения и другие элементы управления. Используйте вкладки для создания многостраничного диалогового окна, которое появляется во многих местах в операционной системе Windows, например на панели управления и в свойствах отображения. Кроме того, TabControl можно использовать для создания страниц свойств, которые используются для задания группы связанных свойств.
Наиболее важным свойством TabControl является TabPages, которое содержит отдельные вкладки. Каждая отдельная вкладка является объектом TabPage.

Совместная работа с нами на GitHub
Источник этого содержимого можно найти на GitHub, где также можно создавать и просматривать проблемы и запросы на вытягивание. Дополнительные сведения см. в нашем руководстве для участников.
.NET Desktop feedback
The .NET Desktop documentation is open source. Provide feedback here.
Обратная связь
Отправить и просмотреть отзыв по
