我查了一下MSDN,Controls的属性是 Control.ControlCollection,它表示控件内包含的控件的集合
怎么没有:将控件添加到控件集合的指定索引位置的方法呢?
有10个label,我想在中间某个位置插一个,试问
1:怎么插?
2:如果插入成功,后面的label的索引值是不是自动统统加1MSDN链接:
http://msdn.microsoft.com/zh-cn/library/system.windows.forms.control.controls(v=VS.100).aspx
http://msdn.microsoft.com/zh-cn/library/system.windows.forms.control.controlcollection.aspx

解决方案 »

  1.   


    Controls.Add(Control value);//将指定的控件添加到控件集合中
    Controls.SetChildIndex(Control child,int new Index);//将集合中的指定子控件的索引设置为指定的索引值。
      

  2.   

    你可以使用 Dictinary<int, Control> 来保存控件和它的 Index。
      

  3.   

    http://msdn.microsoft.com/en-us/library/9tee9ht2%28v=VS.100%29.aspx
      

  4.   

    div1.Controls.AddAt(3,Lable1);
    以上将Lable1控件添加到div1下面,做为div1的第3个子控件(从0开始),原来序号大于等于3的子控件序号自动加一。
      

  5.   

    能再详细点吗?div1是啥啊,MSDN上查不到呢?
      

  6.   

    参考:            Panel p = new Panel();
                p.Controls.Add(new Button());
                p.Controls.Add(new TextBox());
                p.Controls.Add(new RadioButton());
                Control[] controls = new Control[p.Controls.Count];
                p.Controls.CopyTo(controls, 0);
                List<Control> list = new List<Control>(controls);
                list.Insert(1, new CheckBox());
                p.Controls.Clear();
                p.Controls.AddRange(list.ToArray());
                foreach (Control c in p.Controls)
                    Console.WriteLine(c.GetType().Name);
    /*
    输出:
    Button
    CheckBox
    TextBox
    RadioButton
    */
      

  7.   

    方法我是看懂了,就是感觉.........为什么Controls没有这种“将对象添加到集合的指定索引处”方法可以直接使用
      

  8.   

    因为集合这样一种数据结构是不关心所谓“位置”的。
    排名不分先后。相反,你可以使用 Queue<T>,队列这样一种数据结构最关心顺序。
      

  9.   

    你查msdn,我给你查个http://msdn.microsoft.com/zh-cn/library/system.web.ui.controlcollection.addat.aspx里面就有AddAt就完全可以满足你的需求将指定的 Control 对象添加到集合中的指定索引位置public virtual void AddAt(
    int index,
    Control child
    )
    参数
    index 
    类型:System.Int32
    数组中要添加子控件的位置。 child 
    类型:System.Web.UI.Control
    要添加到集合中的 Control。