Ответ 1
Вы можете использовать метод SetChildIndex. Что-то вроде (возможно, вам нужно возиться с indecies):
var prevIndex = mainPanel.Controls.IndexOf(previouslyAdded)
mainPanel.Controls.Add(fx);
mainPanel.Controls.SetChildIndex(fx, prevIndex);
У меня есть "FlowLayoutPanel" и хочу добавить к нему ряд "UserControl":
mainPanel.Controls.Add(Fx);
Каждый новый usercontrol, добавленный после старого, я хочу добавить новый пользовательский контроль перед предыдущим пользовательским контролем, который был добавлен, как я мог это сделать? Я не нашел таких функций, как mainPanel.Controls.AddAt(...)
или mainPanel.Controls.Add(index i, Control c)
или mainPanel.Controls.sort(...)
или....
Вы можете использовать метод SetChildIndex. Что-то вроде (возможно, вам нужно возиться с indecies):
var prevIndex = mainPanel.Controls.IndexOf(previouslyAdded)
mainPanel.Controls.Add(fx);
mainPanel.Controls.SetChildIndex(fx, prevIndex);
по звукам этого вы хотите изменить атрибут flowdirection, чтобы новые элементы управления были добавлены в верхний
flowLayoutPanel1.FlowDirection = FlowDirection.BottomUp;
или вы можете
Label label1 = new Label();
flowLayoutPanel1.Controls.Add(label1);
label1.BringToFront();
Исправление: myPanel.Controls.AddAt(index, myControl)
Что-то вроде этого добавит элемент управления в алфавитном порядке.
FlowLayoutPanel flowLayoutPanel = ...; // this is the flow panel
Control control = ...; // this is the control you want to add in alpha order.
flowLayoutPanel.SuspendLayout();
flowLayoutPanel.Controls.Add(control);
// sort it alphabetically
for (int i = 0; i < flowLayoutPanel.Controls.Count; i++)
{
var otherControl = flowLayoutPanel.Controls[i];
if (otherControl != null && string.Compare(otherControl.Name, control.Name) > 0)
{
flowLayoutPanel.Controls.SetChildIndex(control, i);
break;
}
}
flowLayoutPanel.ResumeLayout();