GroupBox представляет собой специальный контейнер, который ограничен от остальной формы границей. Он имеет заголовок, который устанавливается через
свойство Text
. Чтобы сделать GroupBox без заголовка, в качестве значения свойства Text просто устанавливается пустая строка.
Нередко этот элемент используется для группирования переключателей - элементов RadioButton, так как позволяет разграничить их группы.
Элемент Panel представляет панель и также, как и GroupBox, объединяет элементы в группы. Она может визуально сливаться с остальной формой, если
она имеет то же значение цвета фона в свойстве BackColor, что и форма. Чтобы ее выделить можно кроме цвета указать для элемента границы с помощью
свойства BorderStyle
, которое по умолчанию имеет значение None
, то есть отсутствие границ.
Также если панель имеет много элементов, которые выходят за ее границы, мы можем сделать прокручиваемую панель, установив ее свойство AutoScroll
в true
Также, как и форма, GroupBox и Panel имеют коллекции элементов, и мы также можем динамически добавлять в эти контейнеры элементы.
Например, на форме есть элемент GroupBox, который имеет имя groupBox1
:
private void Form1_Load(object sender, EventArgs e) { Button helloButton = new Button(); helloButton.BackColor = Color.LightGray; helloButton.ForeColor = Color.Red; helloButton.Location = new Point(30, 30); helloButton.Text = "Привет"; groupBox1.Controls.Add(helloButton); }
Для указания расположения элемента в контейнере мы используем структуру Point: new Point(30, 30);
, которой в конструкторе
передаем размещение по осям Х и Y. Эти координаты устанавливаются относительно левого верхнего угла контейнера - то есть в данном случае
элемента GroupBox
При этом надо учитывать, что контейнером верхнего уровня является форма, а элемент groupBox1 сам находится в коллекции элементов формы. И при желании мы могли бы удалить его:
this.Controls.Remove(groupBox1);
Элемент FlowLayoutPanel является унаследован от класса Panel, и поэтому наследует все его свойства. Однако при этом добавляя дополнительную функциональность. Так, этот элемент позволяет изменять позиционирование и компоновку дочерних элементов при изменении размеров формы во время выполнения программы.
Свойство элемента FlowDirection позволяет задать направление, в котором направлены дочерние элементы. По умолчанию имеет значение
LeftToRight
- то есть элементы будут располагаться начиная от левого верхнего края. Следующие элементы будут идти вправо. Это свойство также может принимать следующие значения:
RightToLeft - элементы располагаются от правого верхнего угла в левую сторону
TopDown - элементы располагаются от левого верхнего угла и идут вниз
BottomUp - элементы располагаются от левого нижнего угла и идут вверх
При расположении элементов важную роль играет свойство WrapContents
. По умолчанию оно имеет значение True
. Это позволяет
переносить элементы, которые не умещаются в FlowLayoutPanel, на новую строку или в новый столбец. Если оно имеет значение False
,
то элементы не переносятся, а к контейнеру просто добавляются полосы прокрутки, если свойство AutoScroll
равно true.