2017-03-04 17 views
0

こんにちは、私は画像をクリックしているときに、先の画像ボックスに既に存在するランダムな画像を追加するアルゴリズムを作ろうとしています。それを作る。私は、画面上の例のPictureBox1を持っていることを意味し、ボタンをクリックすると、2番目のPictureBoxはpictureBox1が90x90であるためにpictureBox1.Top-90に移動する必要があります。私はボタンをクリックしたときに二...私は今のところ持っているものがあります前の画像に画像を追加

、新しいピクチャボックスは、ちょうど最初PictureBox1のトップ90にするたびに追加されます。

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; } 


    } 

} 
+0

何が意図されているのかわかりにくいです。あなたが達成したいことを確かにしないコードについて話すのではなく、達成したいことを記述してください。 –

+0

私は説明しました、私は4つの画像ボックスを持っています。ボタンをクリックすると次の画像ボックスは前のpicturebox.topと同じです - 90px、thats all。 – RTX

答えて

1

これを試してみてください:

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); 
} 
+0

完璧、ありがとう – RTX

+0

助けがあればもう一度質問があります。ボタンをクリックすると、4回後、pictureboxesはもう追加されません。しかし、どうすれば作れますか?毎回pictureboxesを追加するにはボタンは(無限に)クリックされますか?ありがとう – RTX