如何将控件添加到集合的开头?

时间:2013-04-15 05:55:00

标签: c# asp.net

例如;

panel1.Controls.Add(myControl);添加到集合的末尾。

有没有办法添加到集合的开头而不替换开头的那个?

panel1.Controls.AddAt(0, myControl)将控件替换为0。

更新

实际上它似乎工作而不是取代它。我可能弄错了。

2 个答案:

答案 0 :(得分:5)

您可以使用ControlCollection.SetChildIndex方法。

  

将集合中指定子控件的索引设置为   指定的索引值。


  

调用SetChildIndex时,孩子提到的Control   参数移动到newIndex和另一个指定的位置   Control中的Control.ControlCollection个引用被重新排序   适应这一举动。

答案 1 :(得分:0)

试试这个:

List<Literal> persistControls = new List<Literal>();
protected void Page_Load(object sender, EventArgs e)
{          
     display();           
}

protected void commentButton_Click(object sender, EventArgs e)
{
    Literal myComment = new Literal();
    myComment.Text = "<p>" + commentBox.Text + "</p><br />";
    commentPanel.Controls.Add(myComment);
    persistControls.Insert(0,myComment);
    Session["persistControls"] = persistControls; 
    display();
}
void display()
{
    // if you already have some literal populated
    if (Session["persistControls"] != null)
    {
        // pull them out of the session
        persistControls = (List<Literal>)Session["persistControls"];
        foreach (Literal ltrls in persistControls)
            commentPanel.Controls.Add(ltrls); // and push them back into the page
    }
}