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


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

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

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

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

7 63

7 ответов:

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

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.

порядок добавления элементов управления в коллекцию элементов управления определяет порядок закрепления.

(ради того, чтобы показать другой вариант): В Visual Studio 2012 (и далее):

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

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

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