Порядок слоя компонентов 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 должны поддерживать это.