Порядок слоя компонентов WinForm UI

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

Как изменить порядок слоев или порядок компонентов после добавления компонентов?

4 ответа

Решение

Это когда вы загружаете компоненты динамически в коде или в конструкторе? Если это в конструкторе, вы можете использовать команды " Формат" -> "Порядок" -> "Отправить назад" и " Формат" -> "Порядок" -> "Привести к фронту". При отправке правой кнопкой мыши по элементу управления также доступны кнопки " Отправить на задний план" и " Переместить на передний план", а также панель инструментов "Макет", которая должна автоматически отображаться при работе в конструкторе форм.

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

Когда элемент управления перекрывается, именно z-индекс определяет, какой элемент управления оказывается на вершине. По сути, каждый элемент управления существует в своем собственном отдельном пронумерованном слое. Элемент управления, имеющий уровень 1 z-индекса, появится над элементом управления на уровне z-index. 2, если они перекрываются. Обычно z-индекс группы элементов управления определяется порядком, в котором вы добавляете элементы управления, так что последний добавленный элемент управления всегда находится в верхнем слое (с z-индексом 0),

Однако вы можете изменить эти параметры.

Чтобы определить или установить z-индекс элемента управления, вы можете использовать GetChildIndex() а также SetChildIndex() Методы коллекции Controls. Вот пример, который перемещает элемент управления на третий уровень в z-index.

Controls.SetChildIndex(ctrl, 2);

Обычно вам не понадобится подобный элемент поиска. Вместо этого вам просто нужно поместить элемент управления в конец z-индекса (самый нижний слой) или перенести его на верх. Выполните эту функцию во время разработки, щелкнув правой кнопкой мыши элемент управления и выбрав "Привести в Fron" или "Отправить в Back". Вы также можете выполнить ту же задачу программно, используя Control.BringToFront() или же Control.SendToBack() методы.

ctrl.BringToFront(); // This is equivalent to Controls.SetChildIndex(ctrl,0);

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

Вы пытались играть с Z-Order?

См. Также: метод Control.SentToBack - таким образом, большинство элементов управления Winform должны поддерживать это.

Другие вопросы по тегам