2009-08-29 5 views
19

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

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

ответ

27

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

4

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

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

30

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

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

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

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

Controls.SetChildIndex(ctrl, 2); 

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

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

Я нашел это полезным. Также обнаружил GetChildIndex, чтобы выяснить во время выполнения, управление которым находится сверху. Спасибо. –

11

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

+1

View> OtherWindows> DocumentOutline или с помощью сочетания клавиш Ctrl + W, U –

Смежные вопросы