Обсуждение статьи "DoEasy. Элементы управления (Часть 4): Элемент управления "Панель", параметры Padding и Dock"

 

Опубликована статья DoEasy. Элементы управления (Часть 4): Элемент управления "Панель", параметры Padding и Dock:

В статье реализуем работу таких параметров панели как Padding (внутренние отступы/поля со всех сторон элемента) и Dock (способ расположения объекта внутри контейнера).

WinForm-объект "Панель" по сути является обычным контейнером для размещения внутри него других WinForm-объектов. При размещении таких объектов мы можем самостоятельно указать требуемые координаты размещения объекта, и он будет расположен на указанных координатах. Но мы можем также указать и способ привязки размещаемого в контейнере объекта после его создания внутри контейнера. И для этого существует шесть способов привязки объекта внутри своего контейнера (свойство Dock объекта):

  1. Присоединение к верхней границе и растягивание на ширину контейнера,
  2. Присоединение к нижней границе и растягивание на ширину контейнера,
  3. Присоединение к левой границе и растягивание на высоту контейнера,
  4. Присоединение к правой границе и растягивание на высоту контейнера,
  5. Растягивание на ширину и высоту всего контейнера (заполнение),
  6. Объект прикреплён к указанным координатам и его размеры не меняются.

При этом, если выбран один из способов привязки, где объект прилипает к одной, или всем границам своего контейнера, его края притягиваются к границе контейнера с учётом величины Padding, установленной для контейнера — граница располагаемого объекта будет притянута не к границе контейнера, а будет отстоять от его границы на дистанцию, величина которой указана в значении Padding контейнера.

Способ же расположения объекта внутри контейнера указывается в его значении Dock. При этом, если в контейнере находится не один объект, то каждый последующий будет "прилипать" не к границе контейнера на дистанции Padding, а к предыдущему объекту, притянутому к той же стороне контейнера.

На изображении показано как в MS Visual Studio притягиваются объекты к верхней грани своего контейнера, для которого установлено значение Padding равное 20, если для них выбрать притягивание к верхней границе контейнера:


Сегодня сделаем все возможные варианты расположения объекта внутри своего контейнера только для одного объекта.
Для того, чтобы учитывать значение Padding контейнера, мы сделаем не смещение координат расположения объекта внутри панели, а в самом объекте "Панель" добавим ещё один объект на канвасе — объект-подложку, и уже на него будем располагать все нужные объекты внутри панели.

Автор: Artyom Trishkin