C# 将picturebox添加到上一个

C# 将picturebox添加到上一个,c#,visual-studio,C#,Visual Studio,您好,我正在用c#在vs中工作。我正在尝试创建一个算法,当单击按钮时,该算法会将一个已经存在的随机图片框添加到上一个图片框中。但我不知道如何创建它。我的意思是,我在屏幕上有一个示例图片框,当我单击按钮时,第二个PictureBox应该转到pictureBox1.Top-90,因为PictureBox是90x90,当再次单击按钮时,第三个转到第二个PictureBox的顶部 这就是我现在拥有的,当我单击按钮时,新图片框每次都会添加到第一个图片框的前90位X1: public partial cla

您好,我正在用c#在vs中工作。我正在尝试创建一个算法,当单击按钮时,该算法会将一个已经存在的随机图片框添加到上一个图片框中。但我不知道如何创建它。我的意思是,我在屏幕上有一个示例图片框,当我单击按钮时,第二个PictureBox应该转到pictureBox1.Top-90,因为PictureBox是90x90,当再次单击按钮时,第三个转到第二个PictureBox的顶部

这就是我现在拥有的,当我单击按钮时,新图片框每次都会添加到第一个图片框的前90位X1:

public partial class Form1 : Form
{
    public Form1()
    {
        InitializeComponent();
    }

    public static Random rand = new Random();  

    private void button1_Click_1(object sender, EventArgs e)
    {
        int box = rand.Next(1, 4);
        if (box == 1)
        { pictureBox2.Top = pictureBox1.Top - 90; }
        if (box == 2)
        { pictureBox3.Top = pictureBox1.Top - 90; }
        if (box == 3)
        { pictureBox4.Top = pictureBox1.Top - 90; }


    }

}
试试这个:

PictureBox _lastAddedPictureBox;
List<int> _notAddedBoxes = new List<int> {1,2,3};

private void button1_Click_1(object sender, EventArgs e)
{
    if(_lastAddedPictureBox == null)
    { 
      // if we assumed that pictureBox1 has been already added to the right location.
      _lastAddedPictureBox = pictureBox1;
    }

     int index = rand.Next(0, _notAddedBoxes.Count - 1);
     int box = _notAddedBoxes[index];

    if (box == 1)
    {
       pictureBox2.Top = _lastAddedPictureBox.Top - 90; 
       _lastAddedPictureBox  =  pictureBox2;
    }
    if (box == 2)
    { 
       pictureBox3.Top = _lastAddedPictureBox.Top - 90; 
      _lastAddedPictureBox  =  pictureBox3;
    }
    if (box == 3)
    { 
       pictureBox4.Top = _lastAddedPictureBox.Top - 90; 
       _lastAddedPictureBox  =  pictureBox4;
    } 

    // if we assume that you don't want to keep moving what has been already added.
    _notAddedBoxes.RemoveAt(index);
}
PictureBox\u最新添加的图片框;
列表_notaddedbox=新列表{1,2,3};
私有无效按钮1\u单击\u 1(对象发送者,事件参数e)
{
如果(_lastAddedPictureBox==null)
{ 
//如果我们假设pictureBox1已经添加到正确的位置。
_lastAddedPictureBox=pictureBox1;
}
int index=rand.Next(0,_notadedboxes.Count-1);
整数框=_notadedboxes[索引];
如果(框==1)
{
pictureBox2.Top=\u lastAddedPictureBox.Top-90;
_lastAddedPictureBox=pictureBox2;
}
如果(框==2)
{ 
pictureBox3.Top=_lastAddedPictureBox.Top-90;
_lastAddedPictureBox=pictureBox3;
}
如果(框==3)
{ 
pictureBox4.Top=\u lastAddedPictureBox.Top-90;
_lastAddedPictureBox=pictureBox4;
} 
//如果我们假设您不想继续移动已添加的内容。
_标记的框。移除(索引);
}

很难猜出目的是什么。描述你想要完成的任务,而不是谈论那些肯定不能完成你想要完成的任务的代码。我解释过,我有4个picturebox,点击按钮时,下一个picturebox等于上一个picturebox。top-90px,仅此而已。嘿,如果你能帮忙,我还有一个问题。现在如果我点击按钮,4次之后,PictureBoxs将不再添加。但是我该怎么做?要在每次单击按钮时(无限次)添加PictureBoxs吗?谢谢