2010-04-09 2 views
60

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

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

Основная информация: Есть ли простой способ в WinForms (C#), чтобы управлять порядком, в котором вещи пристыковываются к сторонам элементов управления?

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

+0

Спасибо; Мне нужно было программно контролировать стыковку, и я даже не понимал, что их заказ контролирует, как они состыковались. –

ответ

56

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

myControl.SendToBack(); 
myControl.BringToFront(); 
+1

Я искал 'control.SendToFront()' Смотрите, теперь это было легко. Благодаря! – caesay

+8

@Tommy: Вы обычно программируете из-за своего компьютера? :) –

+2

В окне от дизайна, щелкните правой кнопкой мыши. выберите sendToBack и щелкните правой кнопкой мыши еще раз: BringToFont –

4

контрольный имеет два метода, чтобы добиться того, что вы ищете: BringToFront и SendToBack.

112

Перейти к обзору -> Другие окна -> наброски документа.

В этом окне перетащите элементы управления, чтобы докинг был таким, какой вам нравится.

+0

Мне было интересно, какие слова я мог бы использовать, чтобы описать это точное окно, попасть туда в конце концов в Google, спасибо! – Coops

+0

+1 решена моя проблема –

+0

+1 в случае организации нескольких элементов управления –

3

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

+0

Мне нужно отредактировать порядок стыковки после добавления элементов управления в коллекцию – caesay

+2

Затем перейдите к методу 'ControlCollection.SetChildIndex (control, index)'. –

+0

@Oliver Hanappi: Возможно ли это сделать в дизайнере? Без кода? – user2366975

10

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

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

+1 для .Reverse – hawbsl

-3

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

+0

Это сообщение не отвечает на вопрос, и этот вопрос уже 6 лет с соответствующими ответами. – caesay

2

(ради материи, показывающим другой вариант): В Visual Studio 2012 (и более поздних версий):

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

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