WinForms: интерфейс при изменении размера окна
В Windows Forms расположение элементов регулируется свойствами контролов и контейнерами. CSS-медиазапросов у обычных WinForms-контролов нет. Задача — сохранить доступность полей и кнопок при изменении окна, шрифта и DPI.
Выберите контейнер
- TableLayoutPanel подходит для формы с подписями и полями: строки и столбцы задают структуру.
- FlowLayoutPanel размещает последовательность элементов и может переносить их.
- SplitContainer разделяет две области с изменяемой пользователем границей.
Dock и Anchor
Dock привязывает контрол к стороне контейнера или заполняет оставшуюся область. Anchor сохраняет расстояния до выбранных сторон; привязка слева и справа растягивает ширину.
searchBox.Anchor = AnchorStyles.Top
| AnchorStyles.Left | AnchorStyles.Right;
resultsGrid.Dock = DockStyle.Fill;
buttonsPanel.Dock = DockStyle.Bottom;Учитывайте порядок контролов при Dock: ранее занятое пространство влияет на оставшуюся область. AutoSize полезен для текста и контейнеров, но не поддерживается одинаково всеми контролами. Задайте разумный MinimumSize, чтобы окно не сжимало поля до недоступного состояния.
Проверка результата
- Проверьте минимальное и широкое окно, длинные локализованные подписи и увеличенный шрифт.
- Проверьте масштаб дисплея и переход между мониторами, если приложение это поддерживает.
- Пройдите форму клавишей Tab: порядок должен совпадать с задачей пользователя.
- Убедитесь, что кнопки подтверждения и сообщения об ошибках остаются доступны без обрезки.
Если при узком окне нужна другая компоновка, явно изменяйте свойства контейнеров в коде, а не пытайтесь применять CSS к нативным контролам.