SmartQuery /ВОПРОС → ПРИМЕР → ПОНЯТНЫЙ ОТВЕТ
Веб-разработка

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, чтобы окно не сжимало поля до недоступного состояния.

Проверка результата

  1. Проверьте минимальное и широкое окно, длинные локализованные подписи и увеличенный шрифт.
  2. Проверьте масштаб дисплея и переход между мониторами, если приложение это поддерживает.
  3. Пройдите форму клавишей Tab: порядок должен совпадать с задачей пользователя.
  4. Убедитесь, что кнопки подтверждения и сообщения об ошибках остаются доступны без обрезки.

Если при узком окне нужна другая компоновка, явно изменяйте свойства контейнеров в коде, а не пытайтесь применять CSS к нативным контролам.

Документация