Как контролировать порядок стыковки в WinForms - PullRequest
66 голосов
/ 09 апреля 2010

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

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

Краткое содержание: Есть ли в WinForms (C #) простой способ контролировать порядок, в котором объекты располагаются по бокам элементов управления?

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

Ответы [ 7 ]

128 голосов
/ 09 апреля 2010

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

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

66 голосов
/ 09 апреля 2010

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

myControl.SendToBack();
myControl.BringToFront();
11 голосов
/ 09 апреля 2010

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

List<Control> controls = new List<Control();
controls.Add(new myFirstControl());
controls.Add(new mySecondControl());
controls.Reverse();
this.Controls.AddRange(controls.ToArray());
4 голосов
/ 09 апреля 2010

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

4 голосов
/ 09 апреля 2010

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

2 голосов
/ 03 ноября 2016

(ради показа другого варианта): В Visual Studio 2012 (и более поздних версиях):

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

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

0 голосов
/ 01 апреля 2016

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

...