В статье рассмотрим способ создания «резинового» интерфейса в формах Windows Forms и разберёмся, как растянуть элементы на форме при изменении размера окна программы.
Создадим в Visual Studio проект Windows Forms и разместим на форме следующие элементы управления:
- Label
- TextBox
- RichTextBox
- Button
Запустим программу и с помощью мыши попробуем увеличить размеры окна, потянув правый нижний угол формы. В результате получим следующее:
Видим, что окно формы увеличилось в размере, но элементы управления никак не реагируют на данные изменения.
Теперь покажем, как создать адаптивный к изменениям размера окна интерфейс на форме Windows Forms.
Как растянуть элементы на форме Windows Forms
Для создания «резинового» интерфейса нужно воспользоваться свойствами элементов управления из категории Макет (Layout). А конкретно свойством Anchor.
В Windows Forms свойство Anchor определяет стороны контейнера (Top, Bottom, Left, Right) к которым привязывается элемент управления. При изменении размера контейнера расстояние между указанной стороной контейнера и ближайшей к ней стороне элемента управления остаётся неизменным.
Таким образом можно добиться растягивания и перемещения элементов в форме при изменении её размера.
В нашем случае контейнером для элементов управления является всё окно.
Зададим для TextBox значение атрибута Anchor = Top, Left, Right. Теперь расстояние между соответствующими сторонами ТекстБокса и окна будет неизменным. Так мы добьёмся изменения ширины контрола при изменении ширины окна.
Для RichTextBox значение свойства Anchor сделаем равным Top, Bottom, Left, Right.
У кнопки Button установим Anchor, как Top, Right.
Теперь запустим программу и изменим размер окна: увидим, что элементы управления на форме растягиваются и меняют своё местоположение. Теперь интерфейс стал адаптированным к изменению размера окна.
Есть ещё один момент. Когда мы будем уменьшать мышью размер формы — контролы будут скрываться из поля зрения.
Чтобы решить данную проблему, необходимо указать минимальный размер формы 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 элементов управления.
Размер элемента управления
-
Щелкните элемент управления, чтобы изменить размер и перетащите один из восьми маркеров.
Note
Выберите элемент управления и нажмите клавиши со стрелками, удерживая нажатой клавишу SHIFT, чтобы изменить размер элемента управления на один пиксель за раз. Нажимайте клавиши со стрелками вниз и вправо при нажатой клавиши SHIFT и CTRL, чтобы изменить размер элемента управления, с большим шагом.
Чтобы изменить размер нескольких элементов управления в форму
-
Удерживая нажатой клавишу CTRL или SHIFT и выберите элементы управления, которые вы хотите изменить. Размер первый выбранный элемент управления используется для других элементов управления.
-
На формат меню, выберите установить тот же размер, а затем выберите один из четырех вариантов. Первые три команды изменения размеров элементов управления в соответствии с первого выбранного элемента управления.
См. также
- Элементы управления Windows Forms
- Расположение элементов управления в формах Windows Forms
- Создание меток и назначение сочетаний клавиш для элементов управления Windows Forms
- Элементы управления для использования в формах Windows Forms
- Функциональная классификация элементов управления Windows Forms
- Практическое руководство. Изменение размера формы Windows Forms, с помощью конструктора
Суть такова: нужно сделать автоматическое увеличение содержимого в форме Windows Forms при расширении экрана, чтобы картинки, кнопки увеличивались. Сам новичок в этом деле, функция не обязательна, но будет крайне полезна.
-
Вопрос задан
-
1579 просмотров
Комментировать
Подписаться
3
Оценить
Комментировать
Решения вопроса 1
С помощью свойств Anchors
и Dock
, а для более сложной логики используйте специальные контейнеры, управляющие layout’ом, такие как FlowLayoutPanel
.
Комментировать
Пригласить эксперта
Ваш ответ на вопрос
Войдите, чтобы написать ответ
Похожие вопросы
-
Показать ещё
Загружается…
Минуточку внимания
Реклама