1     2    3 1 2 3 都是panel中的picturebox ,我现在动态生成picturebox4,显示在1的位置,1 2 3 都相应的后移一个位置,也就是 4    1    2    3   ,也就是现在的1显示在2的位置上,依次,怎么实现 ,但是不能一一列举(类似这样的picturebox4.location=....),

解决方案 »

  1.   

    如果不让用Location的话.考虑使用FlowLayoutPanel 
    加第4个的时候把里面的picturebox都取出来.然后再加进去一次.就可以实现你的需求了
    供你参考.
      

  2.   

     说说我的思路
    先排序foreach(Control  control in this.pl .Controls)
    {
    if(control.GetType () == typeof(PictureBox) )
    {
    MaxNum++;
    list.Add (control);
    //對list進行排序,會以升序來排列。
    list.Sort((IComparer)new PictureBoxComparer());
    //枚舉所有的pictureBox
    for (i = 0; i <list.Count;i++ )
    {
    PictureBox pic = (PictureBox)list[i];
    }
    }
    }
    但是我不知道怎么让list[0]赋值给list[1],
    我 想这么写
    pb=(PictureBox)list[0];
    for(MaxNum=1;MaxNum<=7;MaxNum++)
    {
      怎么让list[MaxNum]赋值给list[MaxNum+1]
    }不知道我的想法对不对,但是我不知道其他的实现方法了 ,高人赶快指教一下,
      

  3.   


    for(MaxNum=6;MaxNum >=0;MaxNum--)
    {
      list[MaxNum+1]=list[MaxNum];
      list[0]=pb;
    }
      

  4.   

    我不知道你的整体思路是怎样的,所以不知道该怎么答。1.有个list来存pb,在增加时,新的pb你要放在第一位,就 list.insert(0,pb);
    2.显示方法。不用去管list里面的排序(排序是交给在添加或删除时做的),
      一个循环,从list[0]-list[count-1],设位置显示出来。添加删除等操作时,就调用一下显示方法。
      

  5.   

    我需要让所有的PictureBox都显示在panel的中间位置,但是我还要动态生成一个PictureBox,但是动态生成的不一定在什么位置。我写个方法,就是只要有位置pos,动态生成的PictureBox就显示在相应的位置上,但是仍然要全部显示在
    panel的中间位置,不知道够明白没有(最多有8个PictureBox)
    private void ShowCoil(int pos)
    {
      switch(pos)
             case 1:
                      ........
    }
    红色怎么写
      

  6.   

    问下
    为什么修改控件Location,不起作用呢
      

  7.   


    控件.location=new point (x轴,y轴);
      

  8.   

    要PictureBox数组吧,去仔细地控制下标!
      

  9.   


    测试下吧 看看能不能成功
                List<PictureBox> list = new List<PictureBox>();
                foreach (Control c in this.Controls)
                {
                    if (c is PictureBox)
                    {
                        list.Add((PictureBox)c);
                    }
                }
                //这里的的list.sort()我就不写了..
                PictureBox p4 = new PictureBox();
                p4.Image = global::WindowsApplication3.Properties.Resources.Winter;
                p4.Size = list[0].Size;
                p4.Location = list[0].Location;
                this.Controls.Add(p4);            for (int i = 0; i < list.Count; i++)
                {                if ((list[i].Location.X + list[i].Location.X) <= this.Size.Width)
                    {
                        list[i].Location = new Point(list[i].Location.X + list[i].Size.Height, list[i].Location.Y);
                    }
                    else
                    {
                        if ((list[i].Location.Y + list[i].Location.Y) < this.Size.Height)
                        {
                            list[i].Location = new Point(p4.Location.X, p4.Location.Y + p4.Size.Height);
                        }
                    }            }