我正在尝试在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];
}
答案 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}}