C#示例初学者

时间:2016-03-21 01:53:02

标签: c#

我正在尝试在3个不同的PictureBox中随机显示图像。像老虎机一样。我将我的图像添加到图像列表中。然而,当我运行该程序时,我会在所有3个框中获得完全相同的图片。任何帮助是极大的赞赏。 这是我的代码snipet。

 private void button1_Click(object sender, EventArgs e)
 {
     Random rand = new Random();
     int index = rand.Next(imageList1.Images.Count);
     pictureBox1.Image = imageList1.Images[index];
     pictureBox2.Image = imageList1.Images[index];
     pictureBox3.Image = imageList1.Images[index];
  }

2 个答案:

答案 0 :(得分:0)

试试这个。将Random的初始化放在全局范围内。现在,每次调用Next时都不需要重新创建对象。它更快,使用更少的内存。它还可以防止它返回相同的数字,因为Random使用当前时间生成数字。如果你继续重新创建它并生成一个数字,它往往会重复返回相同的值。

最后一部分:创建一个函数来获取随机图像索引,这将使您的代码更清晰,更简洁。 :)

祝你好运,编程是一个很好的爱好。希望它对你有用!

    private readonly Random rand = new Random();
    private int[] _imgIndexes = new int[3];

    private void button1_Click(object sender, EventArgs e)
    {
        // generate the random index, and pick that image with that index, then store the index number in an array so we can compare the results afterwards.
        var randomIndex = getRandomImageIndex();
        pictureBox1.Image = imageList1.Images[randomIndex];
        _imgIndexes[0] = randomIndex;

        randomIndex = getRandomImageIndex();
        pictureBox2.Image = imageList1.Images[randomIndex];
        _imgIndexes[1] = randomIndex;

        randomIndex = getRandomImageIndex();
        pictureBox3.Image = imageList1.Images[randomIndex];
        _imgIndexes[2] = randomIndex;

        if (_imgIndexes[0] == _imgIndexes[1] && _imgIndexes[1] == _imgIndexes[2])
        {
            MessageBox.Show("same");
        }
        // reset the result array so we can compare again.
        _imgIndexes = new int[3];
    }

    private int getRandomImageIndex()
    {
        return rand.Next(imageList1.Images.Count);
    }

答案 1 :(得分:-1)

因为在index

之后您的rand.Next(imageList1.Images.Count);永远不会改变

在每张图片之前为index分配<{1}}