Ответ 1
Используйте следующие методы:
myControl.SendToBack();
myControl.BringToFront();
Как говорится в заголовке, я ищу способ управления порядком, в котором элементы док-станции находятся на вершине моего элемента управления.
Я играл с дизайнером окон, и я не могу найти, что делает RightClick->Order->SendToFront
, потому что thats точно, что я хочу. Насколько я могу судить, когда я добавляю свое содержимое под свой контроль, самое новое содержимое всегда наверху, и я хотел бы, чтобы содержимое Newer было внизу, а самое старое содержимое было на сверху.
Резюме. Есть ли простой способ в WinForms (С#), чтобы контролировать порядок, в котором вещи состыковались со сторонами элементов управления?
Изменить: Я должен сделать это из кода позади, поскольку я добавляю свои элементы управления, я не могу использовать какие-либо функции конструктора WinForm, но то, что я пытаюсь сделать, имитирует Дизайнеры WinForms SendToBack
и SendToFront
Используйте следующие методы:
myControl.SendToBack();
myControl.BringToFront();
Перейдите в Вид → Другие окна → контур документа.
В этом окне перетащите элементы управления, чтобы закрепить их так, как вам нравится.
Как вы сказали, новейший элемент управления, добавленный в коллекцию элементов управления, является надписью сверху. Если вам нужен более новый элемент управления, который будет добавлен внизу, я предлагаю создать список элементов управления, добавить элементы управления в список, отменить список и добавить список в коллекцию элементов управления.
List<Control> controls = new List<Control();
controls.Add(new myFirstControl());
controls.Add(new mySecondControl());
controls.Reverse();
this.Controls.AddRange(controls.ToArray());
Элемент управления имеет два способа достижения того, что вы ищете: BringToFront
и SendToBack
.
Порядок, в котором элементы управления добавляются в коллекцию Controls, определяет порядок стыковки.
(Ради вопроса, показывая другой вариант): В Visual Studio 2012 (и позже):
Это даст вам возможность перестроить элементы управления в желаемом порядке.
Обратите внимание, что когда вы делаете это программно, то есть очень простой способ добиться этого, а именно:
containerPanel.Controls.SetChildIndex(Element, 0); //sends element to the bottom of the list
Используйте FlowLayoutPanel, он делает именно то, что вы хотите.