更改图片框#N

时间:2018-12-20 12:13:05

标签: c#

我想建立一个for循环以使用picturebox[i]来更改图片框的内容,但是我不知道该怎么做。 我的想法是做这样的事情,整个代码段中都有很多if语句,但与此类似。

for (int i = 0; i < length; i++)
{
    pictureBox[i].image = Image.FromFile("../Pics/Salmon.jpg");
}

我不知道该怎么做,也找不到遇到相同问题的人。有什么办法吗?还是我必须手动执行。

2 个答案:

答案 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");

您可以使用相同的方法来制作不同的图片,我会把它作为一种锻炼方式让您;)