C# 根据C中的随机数选择一个对象

C# 根据C中的随机数选择一个对象,c#,random,C#,Random,我想随机更改图片框控件的背景色。我所拥有的是 Random Rand = new Random(); int randNum = Rand.Next(1,3); string boxName = "pic" + randNum.ToString(); PictureBox picBox = new PictureBox(); picBox.Name = boxName; picBox.BackColor = Color.White; 但它不起作用。我知道picBox.Name=boxName

我想随机更改图片框控件的背景色。我所拥有的是

Random Rand = new Random();
int randNum = Rand.Next(1,3);
string boxName = "pic" + randNum.ToString();
PictureBox picBox = new PictureBox();
picBox.Name = boxName;

picBox.BackColor = Color.White;
但它不起作用。我知道picBox.Name=boxName实际上并没有将picBox设置为那个图片框,但这是唯一不会给出intellisense错误的代码

我有3个图片框,pic1、pic2和pic3。这是通过单击按钮完成的,因此随机数介于1和3之间

我试着申请,但没能成功,有人能帮我吗?

创建一个PictureBox数组:

并在选择随机项时使用它:

var picBox = boxes[Rand.Next(0, 3)];
注意:必须从包含的0到排除的3进行绘制,因为数组是从0索引的

然后将随机PictureBox分配给picBox变量,以便您可以更改背景:

picBox.BackColor = Color.White;

为什么不简单地将颜色存储在一个数组中,然后随机改变背景颜色呢?无需重新创建图片框

Color[] colours = new Color[] { Color.White, Color.Black, Color.Blue, Color.Red }; //etc
Random Rand = new Random();
int randNum = Rand.Next(0, colours.Length);
然后指定颜色:

picBox.BackColor = colours[randNum];

您需要将所有图片框保存或放入列表或数组中,然后获取一个随机数,从该列表/数组中选择一个。如果要加载真实图像,则需要从文件中创建位图对象有一个构造函数,该构造函数采用文件名,然后将该图像分配给PictureBox对象的.BackgroundImage。这实际上回答了问题!我困惑了一分钟,然后意识到我的问题不清楚。。。我希望预定义颜色,并在图片框上进行随机操作,即在3个图片框中,一个随机框的颜色发生变化。@Edper根据MSDN,一个32位有符号整数大于或等于零,小于maxValue,这里的maxValue是长度。@Daevin啊,在这种情况下,MarcinJuraszek的答案应该更大accurate@codemonkeh你是对的,我的错,我通常会把长度/大小混淆为随机数的最大值。更好的做法是使用box[Rand.Next0,box.length]如果图片框的数量在future@codemonkeh恐怕你会在那里得到一个索引例外。盒子[Rand.Next0,boxes.Length-1]效果更好@古斯多,你错了。Random.Next将第二个参数作为独占参数。@MarcinJuraszek确实如此。学校日!
picBox.BackColor = colours[randNum];