Как растянуть элементы на форме windows forms

В статье рассмотрим способ создания «резинового» интерфейса в формах Windows Forms и разберёмся, как растянуть элементы на форме при изменении размера окна программы.

Создадим в Visual Studio проект Windows Forms и разместим на форме следующие элементы управления:

  • Label
  • TextBox
  • RichTextBox
  • Button

Начальный интерфейс Windows Forms

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

Растягивание интерфейса Windows Forms

Видим, что окно формы увеличилось в размере, но элементы управления никак не реагируют на данные изменения.

Теперь покажем, как создать адаптивный к изменениям размера окна интерфейс на форме Windows Forms.

Как растянуть элементы на форме Windows Forms

Для создания «резинового» интерфейса нужно воспользоваться свойствами элементов управления из категории Макет (Layout). А конкретно свойством Anchor.

В Windows Forms свойство Anchor определяет стороны контейнера (Top, Bottom, Left, Right) к которым привязывается элемент управления. При изменении размера контейнера расстояние между указанной стороной контейнера и ближайшей к ней стороне элемента управления остаётся неизменным.

Таким образом можно добиться растягивания и перемещения элементов в форме при изменении её размера.

В нашем случае контейнером для элементов управления является всё окно.

Зададим для TextBox значение атрибута Anchor = Top, Left, Right. Теперь расстояние между соответствующими сторонами ТекстБокса и окна будет неизменным. Так мы добьёмся изменения ширины контрола при изменении ширины окна.

Установка значения Anchor для TextBox

Для RichTextBox значение свойства Anchor сделаем равным Top, Bottom, Left, Right.

Установка значения Anchor для RichTextBox

У кнопки Button установим Anchor, как Top, Right.

Установка значения Anchor для Button

Теперь запустим программу и изменим размер окна: увидим, что элементы управления на форме растягиваются и меняют своё местоположение. Теперь интерфейс стал адаптированным к изменению размера окна.

Растянуть элементы на форме Windows Forms

Есть ещё один момент. Когда мы будем уменьшать мышью размер формы — контролы будут скрываться из поля зрения.

Чтобы решить данную проблему, необходимо указать минимальный размер формы Windows Form в пикселях. Тем самым форму будет невозможно сделать меньше установленного размера.

Щёлкнем по форме и в окне свойств изменим параметр MinimunSize. Установим его равным текущему размеру формы в визуальном редакторе (Size).

Минимальный размер можно указать и меньшим — таким, при котором интерфейс хорошо выглядит и сохраняет свою функциональность. Нужные значения определяются экспериментально — для этого самостоятельно изменяйте размер формы.

Размеры элементов и их позиционирование в контейнере

Последнее обновление: 31.10.2015

Позиционирование

Для каждого элемента управления мы можем определить свойство Location, которое задает координаты верхнего левого угла элемента относительно контейнера.
При переносе элемента с панели инструментов на форму это свойство устанавливается автоматически. Однако потом в окне Свойств мы можем вручную поправить
координаты положения элемента:

Также мы можем установить позицию элемента в коде:

private void Form1_Load(object sender, EventArgs e)
{
    button1.Location = new Point(50, 50);
}

Установка размеров

С помощью свойства Size можно задать размеры элемента:

Дополнительные свойства MaximumSize и MinimumSize позволяют ограничить минимальный и максимальный размеры.

Установка свойств в коде:

button1.Size = new Size { Width = 50, Height = 25 };
// установка свойств по отдельности
button1.Width = 100;
button1.Height = 35;

Свойство Anchor

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

По умолчанию у каждого добавляемого элемента это свойство равно Top, Left:

Это значит, что если мы будем растягивать форму влево или вверх, то элемент сохранит расстояние от левой и верхней границы элемента до границ контейнера, в качестве которого
выступает форма.

Мы можем задать четыре возможных значения для этого свойства или их комбинацию:

  • Top

  • Bottom

  • Left

  • Right

Например, если мы изменим значение этого свойства на противоположное — Bottom, Right, тогда у нас будет неизменным расстояние между правой и нижней стороной элемента и формой.

При этом надо отметить, что данное свойство учитывает расстояние до границ контейнера, а не формы. То есть если у нас на форме есть элемент Panel, а на
Panel расположена кнопка, то на кнопку будет влиять изменение границ Panel, а не формы. Растяжение формы будет в этом случае влиять только, если оно влияет
на контейнер Panel.

Чтобы задать это свойство в коде, надо использовать перечисление AnchorStyles:

button1.Anchor = AnchorStyles.Left;
// задаем комбинацию значений
button1.Anchor = AnchorStyles.Left | AnchorStyles.Top;

Свойство Dock

Свойство Dock позволяет прикрепить элемент к определенной стороне контейнера. По умолчанию оно имеет значение None, но также позволяет задать еще пять значений:

  • Top: элемент прижимается к верхней границе контейнера

  • Bottom: элемент прижимается к нижней границе контейнера

  • Left: элемент прижимается к левой стороне контейнера

  • Right: элемент прикрепляется к правой стороне контейнера

  • Fill: элемент заполняет все пространство контейнера

Многопоточность и параллелизм в Python: потоки, процессы и гринлеты

py-thonny 06.05.2025

Параллелизм и конкурентность — две стороны многопоточной медали, которые постоянно путают даже бывалые разработчики.

Конкурентность (concurrency) — это когда ваша программа умеет жонглировать. . .

Распределенное обучение с TensorFlow и Python

AI_Generated 05.05.2025

В машинном обучении размер имеет значение. С ростом сложности моделей и объема данных одиночный процессор или даже мощная видеокарта уже не справляются с задачей обучения за разумное время. Когда. . .

CRUD API на C# и GraphQL

stackOverflow 05.05.2025

В бэкенд-разработке постоянно возникают новые технологии, призванные решить актуальные проблемы и упростить жизнь программистам. Одной из таких технологий стал GraphQL — язык запросов для API,. . .

Распознавание голоса и речи на C#

UnmanagedCoder 05.05.2025

Интеграция голосового управления в приложения на C# стала намного доступнее благодаря развитию специализированных библиотек и API. При этом многие разработчики до сих пор считают голосовое управление. . .

Реализация своих итераторов в C++

NullReferenced 05.05.2025

Итераторы в C++ — это абстракция, которая связывает весь экосистему Стандартной Библиотеки Шаблонов (STL) в единое целое, позволяя алгоритмам работать с разнородными структурами данных без знания их. . .

Разработка собственного фреймворка для тестирования в C#

UnmanagedCoder 04.05.2025

C# довольно богат готовыми решениями – NUnit, xUnit, MSTest уже давно стали своеобразными динозаврами индустрии. Однако, как и любой динозавр, они не всегда могут протиснуться в узкие коридоры. . .

Распределенная трассировка в Java с помощью OpenTelemetry

Javaican 04.05.2025

Микросервисная архитектура стала краеугольным камнем современной разработки, но вместе с ней пришла и головная боль, знакомая многим — отслеживание прохождения запросов через лабиринт взаимосвязанных. . .

Шаблоны обнаружения сервисов в Kubernetes

Mr. Docker 04.05.2025

Современные Kubernetes-инфраструктуры сталкиваются с серьёзными вызовами. Развертывание в нескольких регионах и облаках одновременно, необходимость обеспечения низкой задержки для глобально. . .

Создаем SPA на C# и Blazor

stackOverflow 04.05.2025

Мир веб-разработки за последние десять лет претерпел коллосальные изменения. Переход от традиционных многостраничных сайтов к одностраничным приложениям (Single Page Applications, SPA) — это. . .

Реализация шаблонов проектирования GoF на C++

NullReferenced 04.05.2025

«Банда четырёх» (Gang of Four или GoF) — Эрих Гамма, Ричард Хелм, Ральф Джонсон и Джон Влиссидес — в 1994 году сформировали канон шаблонов, который выдержал проверку временем. И хотя C++ претерпел. . .

Вы можете изменить размер отдельных элементов управления, и вы можете изменить размер набора элементов управления одного или разных типов, таких как Button и GroupBox элементов управления.

Размер элемента управления

  1. Щелкните элемент управления, чтобы изменить размер и перетащите один из восьми маркеров.

    Note

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

Чтобы изменить размер нескольких элементов управления в форму

  1. Удерживая нажатой клавишу CTRL или SHIFT и выберите элементы управления, которые вы хотите изменить. Размер первый выбранный элемент управления используется для других элементов управления.

  2. На формат меню, выберите установить тот же размер, а затем выберите один из четырех вариантов. Первые три команды изменения размеров элементов управления в соответствии с первого выбранного элемента управления.

См. также

  • Элементы управления Windows Forms
  • Расположение элементов управления в формах Windows Forms
  • Создание меток и назначение сочетаний клавиш для элементов управления Windows Forms
  • Элементы управления для использования в формах Windows Forms
  • Функциональная классификация элементов управления Windows Forms
  • Практическое руководство. Изменение размера формы Windows Forms, с помощью конструктора

Суть такова: нужно сделать автоматическое увеличение содержимого в форме Windows Forms при расширении экрана, чтобы картинки, кнопки увеличивались. Сам новичок в этом деле, функция не обязательна, но будет крайне полезна.


  • Вопрос задан

  • 1579 просмотров


Комментировать


Подписаться

3



Оценить


Комментировать


Решения вопроса 1

С помощью свойств Anchorsи Dock, а для более сложной логики используйте специальные контейнеры, управляющие layout’ом, такие как FlowLayoutPanel.


Комментировать

Пригласить эксперта


Ваш ответ на вопрос

Войдите, чтобы написать ответ


Похожие вопросы


  • Показать ещё
    Загружается…

Минуточку внимания

Реклама

Понравилась статья? Поделить с друзьями:
0 0 голоса
Рейтинг статьи
Подписаться
Уведомить о
guest

0 комментариев
Старые
Новые Популярные
Межтекстовые Отзывы
Посмотреть все комментарии
  • Звуковые драйвера для windows 10 hp pavilion
  • Tomb raider underworld не запускается на windows 10
  • Какие есть навигаторы для windows ce
  • Windows move windows shortcut
  • Как на windows 10 добавить программу в автозапуск windows