Подтвердить что ты не робот

Как контролировать порядок стыковки в WinForms

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

Я играл с дизайнером окон, и я не могу найти, что делает RightClick->Order->SendToFront, потому что thats точно, что я хочу. Насколько я могу судить, когда я добавляю свое содержимое под свой контроль, самое новое содержимое всегда наверху, и я хотел бы, чтобы содержимое Newer было внизу, а самое старое содержимое было на сверху.

Резюме. Есть ли простой способ в WinForms (С#), чтобы контролировать порядок, в котором вещи состыковались со сторонами элементов управления?

Изменить: Я должен сделать это из кода позади, поскольку я добавляю свои элементы управления, я не могу использовать какие-либо функции конструктора WinForm, но то, что я пытаюсь сделать, имитирует Дизайнеры WinForms SendToBack и SendToFront

4b9b3361

Ответ 1

Используйте следующие методы:

myControl.SendToBack();
myControl.BringToFront();

Ответ 2

Перейдите в Вид → Другие окна → контур документа.

В этом окне перетащите элементы управления, чтобы закрепить их так, как вам нравится.

Ответ 3

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

List<Control> controls = new List<Control();
controls.Add(new myFirstControl());
controls.Add(new mySecondControl());
controls.Reverse();
this.Controls.AddRange(controls.ToArray());

Ответ 4

Элемент управления имеет два способа достижения того, что вы ищете: BringToFront и SendToBack.

Ответ 5

Порядок, в котором элементы управления добавляются в коллекцию Controls, определяет порядок стыковки.

Ответ 6

(Ради вопроса, показывая другой вариант): В Visual Studio 2012 (и позже):

  • Выберите элемент управления, который вы хотите переместить на передний план (или обратно);
  • Нажмите на отмеченные ниже кнопки (Приведите на передний план/Отправлять на Назад); введите описание изображения здесь

Это даст вам возможность перестроить элементы управления в желаемом порядке.

Ответ 7

Обратите внимание, что когда вы делаете это программно, то есть очень простой способ добиться этого, а именно:

containerPanel.Controls.SetChildIndex(Element, 0); //sends element to the bottom of the list

Ответ 8

Используйте FlowLayoutPanel, он делает именно то, что вы хотите.