Как связать размер компонента с размером окна? - PullRequest
1 голос
/ 24 апреля 2019

Я делаю простую программу WinForms.
Я хотел бы связать размер компонента с размером окна.

Допустим, пользователь увеличивает или уменьшает Окно, перетаскивая его границы: я хотел бы, чтобы компонент увеличивался, когда Окно делает это, и наоборот.

Давайте представим, что у нас есть две кнопки в центре окна, бок о бок: я хочу, чтобы они были одинакового размера, заполняя всю ширину окна.

Как я могу это сделать?

1 Ответ

3 голосов
/ 24 апреля 2019

Пример процедуры с использованием TableLayoutPanel и 2 кнопок:

  • Добавить TableLayoutPanel в форму
    1. Редактировать коллекции Columns и Rows так, чтобы у вас было2 столбца, оба размера 50% и одна строка, установлены на Autosize.
    2. Установите Location.X для TableLayoutPanel на 0 и настройте его ширину в соответствии с шириной формы.
    3. Установите для свойства TLP Anchor значение Left и Right
    4. Отрегулируйте и перетащите строкувысота должна быть в два раза больше размера кнопки, в которой она будет размещена
  • Добавить одну кнопку в форму
    1. Отрегулировать внешний вид кнопки, как требуется.
    2. CTRL - Перетащите кнопку, чтобы создать точный дубликат
    3. Добавьте две кнопки в две ячейки TableLayoutPanel
    4. SHIFT -ВыберитеОбе кнопки и установите для свойства Dock значение DockStyle.Fill
    5. Теперь вы можете настроить свойство Margin кнопок (все еще выбрано, поэтому одинаковые настройкибудет применяться к обоим), чтобы изменить расстояние между элементами управления
  • При необходимости отрегулируйте только высоту строки TableLayoutPanel.
  • Дополнительно: если у вас включены только эти элементы управленияформы, вы можете исправить MinimumSize формы, чтобы избежать изменения размера элемента управления при уменьшении размера элементов управленияИз-за неузнаваемости разрушается общий макет: измените размер формы в конструкторе до такой степени, что макет размещенных элементов управления будет скомпрометирован, найдите подходящий минимальный размер и используйте эту меру в качестве свойства MinimumSize формы.MinimumSize может быть установлен с использованием только Width или Height меры (например, (100, 0)).Это ограничивает Width формы, но не Height.Или наоборот.

Если при перетаскивании кнопок внутри TableLayoutPanel кнопки не вставляются автоматически в верхнее левое положение ячейки, а вместо этого отображаются вслучайное место, тогда у TableLayoutPanel ушел жулик , и его нужно убрать.Удалите его и добавьте еще один в форму.Промыть и повторить.

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

Обзор элемента управления TableLayoutPanel

...