Планы док-станций, якорей и жидкостей в приложениях Windows Forms

Итак, меня попросили переделать старое приложение, которое я написал несколько лет назад.

В принципе, ничего не нужно менять, за исключением того, что Клиент хочет, чтобы он был более жидким, и что он должен быть полноэкранным (без видимого "окна"). Т.е. нет заголовка, просто полноэкранного окна без полей.

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

Это легко на веб-страницах/css, но это уже не то, что я делал раньше. Большинство элементов управления будут создаваться программно во время выполнения, на основе того, какое действие было выполнено, и т.д. Как мне выполнить такой макет? В принципе, я хочу, чтобы все это можно было выложить на весь экран, не зная, насколько велика их монитор, или какое разрешение они используют.

Ответ 1

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

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

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

3, свойство Control.Anchor позволяет дочернему элементу управления изменять положение и размер в зависимости от размера клиентской области формы. Таким образом, вы делаете свой контроль всегда фиксированным смещением от правого или нижнего края.

4, свойство Control.Dock будет устанавливать дочерний элемент управления на край, а противоположный размер будет автоматически определяться с помощью содержащейся формы.

Ответ 2

Вы можете поместить свои элементы управления в tableLayout и установить свойство Dock для заполнения.