netlib.narod.ru | < Назад | Оглавление | Далее > |
Я уже ссылался на z-порядок группы элементов управления, являющихся дочерними элементами формы. Термин z-порядок (z-order) относится к трехмерному пространству координат, в котором по осям х и у откладываются горизонтальные и вертикальные координаты, а ось z перпендикулярна экрану.
Очевидно, что z-порядок влияет на внешний вид перекрывающихся элементов управления, имеющих общий родительский элемент управления. Наблюдать z-порядок можно в программе TwoButtonsAnchor, если сделать окошко таким маленьким, чтобы кнопки перекрывались. Кнопка Larger оказывается поверх кнопки Smaller. Кроме того, z-порядок определяет последовательность, в которой располагаются элементы управления, пристыкованные к одному краю формы.
Z-порядок зависит от порядка установки свойств Parent элементов управления или очередности добавления элементов в набор элементов управления. Z-порядок создается программно и может быть изменен только программно. Щелчки пользователя по элементам управления его не изменяют.
Я сам часто путаю, что такое «вершина» и «низ» z-порядка, так что давайте четко это определим. Свойства элемента управления на вершине z-порядка таковы:
у этого элемента управления свойство Parent было установлено первым, или это первый элемент, добавленный в набор элементов управления;
его индекс в свойстве Controls равен 0;
визуально он находится поверх всех других элементов управления; этот элемент получает события от мыши, когда ее указатель находится над ним, даже если то же место занимают другие элементы;
этот элемент управления находится ближе всего к центру клиентской области, когда несколько элементов пристыкованы к одной и той же стороне контейнера.
Свойства элемента управления, находящегося в низу z-порядка, таковы:
у этого элемента управления свойство Parent было установлено последним или это последний элемент, добавленный в набор элементов;
его индекс в наборе элементов управления равен Controls.Count – 1;
он визуально находится ниже всех других элементов управления;
этот элемент управления находится на краю контейнера, даже если к этому краю пристыкованы несколько элементов.
Помимо метода SetChildIndex, реализованного в классе Control.ControlCollection, контейнер может изменять z-порядок дочерних элементов, используя следующие методы:
Методы Control (выборочно)
Метод | Описание |
void BringToFront() | Помещает элемент управления на вершину z-порядка |
void SendToBack() | Помещает элемент управления в низ z-порядка |
Допустим, у формы есть три дочерних элемента управления: btn1, btn2 и btn3. При этом btn1 — на вершине, а btn3 — в низу z-порядка. Тогда метод:
btn3.BringToFront()
поместит btn3 на вершину z-порядка, а btn2 вниз z-порядка. Это не то же, что:
btn1.SendToBack()
В этом случае btn2 окажется на вершине z-порядка, а btn1 внизу.
netlib.narod.ru | < Назад | Оглавление | Далее > |