ContolPanel的类型为:FlowLayoutPanel 发件人是我点击的面板。
如何重新排序我的FlowLayoutPanel中设置的Usercontrols的顺序?
这是我将我的Objekts(UserControls)添加到我的FlowLayoutPanel
的方法private void button1_Click_1(object sender, EventArgs e)
{
int count = 0;
var panel = sender as Panel;
switch (panel.Name)
{
case "TypePanel":
ContolPanel.Controls.Add(new Type().Initialize(_ConnectionStr, _connection, _brugerLNr, _klinikLNr, _speciale, _ICPC, _segmenterStrings).SetModifiedCallBack(FilterModified));
break;
}
}
我添加了4-5次,并且有很多不同的一次,这只是一个。 使用" +"重新排序thies的最佳方法是什么?和" - "按钮?
我想保存List<Controls>
中的所有控件,然后用
ControlList[1] = ControlList[2]
然后将列表中的所有控件插入到FlowLayoutPanel中。 但这只是dosnt似乎适合我。有这么聪明的简单方法吗?
答案 0 :(得分:1)
您可以将用户控件添加到面板,并将用户控件的Dock
属性设置为DockStyle.Top
,然后使用{{3}更改z-order用户控件向上或向下移动。
为此,请将这两种方法添加到用户控件中:
public void MoveUp()
{
if (this.Parent == null)
return;
var index = this.Parent.Controls.GetChildIndex(this);
if (index <= this.Parent.Controls.Count)
this.Parent.Controls.SetChildIndex(this, index + 1);
}
public void MoveDown()
{
if (this.Parent == null)
return;
var index = this.Parent.Controls.GetChildIndex(this);
if (index > 0)
this.Parent.Controls.SetChildIndex(this, index - 1);
}
此外,您可以通过覆盖用户控件中的ProcessCmdKey
来支持使用 + 向上移动并使用 - 键向下移动:
protected override bool ProcessCmdKey(ref Message msg, Keys keyData)
{
switch (keyData)
{
case Keys.Add:
this.MoveUp();
break;
case Keys.Subtract:
this.MoveDown();
break;
default:
break;
}
return base.ProcessCmdKey(ref msg, keyData);
}
此外,您还可以在用户控件中向上移动Button
并向下移动Button
,并在用户控件中处理这些按钮的Click
事件:
private void MoveUpButton_Click(object sender, EventArgs e)
{
this.MoveUp();
}
private void MoveDownButton_Click(object sender, EventArgs e)
{
this.MoveDown();
}
由于我们创建了MoveUp
和MoveDown
public,您可以在表单中上下移动用户控件:
myUserControl1.MoveUp();