我想建立一个for
循环以使用picturebox[i]
来更改图片框的内容,但是我不知道该怎么做。
我的想法是做这样的事情,整个代码段中都有很多if语句,但与此类似。
for (int i = 0; i < length; i++)
{
pictureBox[i].image = Image.FromFile("../Pics/Salmon.jpg");
}
我不知道该怎么做,也找不到遇到相同问题的人。有什么办法吗?还是我必须手动执行。
答案 0 :(得分:0)
您无法访问数组中的PictureBox控件。它们是表单上总体控件集合的一部分。您可以循环浏览表单上的所有控件,而只能在图片框上操作。
示例:
foreach (Control ctrl in this.Controls)
{
if (ctrl is PictureBox picBox) //determine if the control is a picture box
{
picBox.Image = Image.FromFile("../Pics/Salmon.jpg");
}
}
或使用Linq:
this.Controls.OfType<PictureBox>().ToList()
.ForEach(p => p.Image = Image.FromFile("../Pics/Salmon.jpg"));
或者如果您必须根据渗透数组采取行动:
var pics = this.Controls.OfType<PictureBox>().ToArray();
for (int i = 0; i < pics.Length; i++)
{
pics[i].Image = Image.FromFile("../Pics/Salmon.jpg");
}
答案 1 :(得分:0)
您可以先准备集合,然后进行迭代:
var pictureBox = new[] { pictureBox1, pictureBox2, ... };
for (int i = 0; i < pictureBox.Length; i++)
pictureBox[i].Image = Image.FromFile("../Pics/Salmon.jpg");
您可以使用相同的方法来制作不同的图片,我会把它作为一种锻炼方式让您;)