我有一个代码
void SomeButton_Click(object sender, EventArgs e)
{
if (this.Controls.Contains(Panel2))
{
this.Controls.Remove(Panel2);
}
else
{
this.Controls.Add(Panel2);
}
}
我的问题是:代码更改了表单上控件的文档大纲顺序。如何恢复以前的文档大纲?我应该使用哪些属性,方法?或者这是不可能的?
答案 0 :(得分:0)
在删除之前找到索引并添加它,使用Insert
与该索引。您需要通过explicit IList
interface implementation。
private int panelIndex = 0;
void SomeButton_Click(object sender, EventArgs e)
{
if (this.Controls.Contains(Panel2))
{
panelIndex = this.Controls.IndexOf(Panel2);
this.Controls.Remove(Panel2);
}
else
{
IList ctrlsAsList = (IList)this.Controls;
ctrlsAsList.Insert(panelIndex, Panel2);
}
}
答案 1 :(得分:0)
在添加控件后将Controls.SetChildIndex(Control child,int newIndex)用于将其放置在您希望它所在的位置。这仅在您知道控件所在的列表中的确切位置时才有效
作为替代方案,您是否考虑过添加所有面板然后设置Visible = false,直到您需要显示它们为止。这当然只有在面板都是预定义的情况下才有效。如果您是动态创建它们,那么这将不起作用。