C# 使用Foreach循环用图像填充PictureBox

C# 使用Foreach循环用图像填充PictureBox,c#,.net,winforms,picturebox,imagelist,C#,.net,Winforms,Picturebox,Imagelist,在我的项目中,我收集了一些图片盒和一个完整的图像列表。我想使用foreach循环用ImageList中的每个图像填充每个pictureBox。我知道如何使用For循环,但我不知道如何使用foreach循环。我问这个只是为了知识。我认为这可以通过在foreach循环中使用Linq来实现,但我是一个初学者,所以我不知道如何做到这一点 我在for循环中尝试了以下代码: for (intimgcount = 0; intimgcount < intMaxPics; intimgco

在我的项目中,我收集了一些图片盒和一个完整的图像列表。我想使用
foreach
循环用ImageList中的每个图像填充每个pictureBox。我知道如何使用For循环,但我不知道如何使用foreach循环。我问这个只是为了知识。我认为这可以通过在foreach循环中使用Linq来实现,但我是一个初学者,所以我不知道如何做到这一点

我在for循环中尝试了以下代码:

        for (intimgcount = 0; intimgcount < intMaxPics; intimgcount++)
        {                
            pbxCollection[intimgcount].Image = imglst.Images[intimgcount];          
        }     
编辑:如何设置图片框集合在表单中的位置

我试过:

        var i = 0;
        foreach (var pbx in pbxCollection)
        {
            pbx.Image = imglst.Images[i++];
            //set location:
            pbx.Width = 100;
            pbx.Height = 100;
            pbx.Location = new Point(0, pbx.Height * i);
            //add to form:
            this.Controls.Add(pbx);
        }  

你可以这样做

var pbxCollection = new List<PictureBox>();
foreach (Image img in imglst.Images)
{ 
     PictureBox pb = new PictureBox();
     pb.Image = img;
     pbxCollection.Add(pb); 
}     
var pbxCollection=new List();
foreach(imglst.Images中的图像img)
{ 
PictureBox pb=新PictureBox();
pb.Image=img;
pbxCollection.Add(pb);
}     

使用变量增加集合的索引:

var i = 0;
foreach (var pbx in pbxCollection)
{
    pbx.Image = imglst.Images[i++];
    //set location:
    pbx.Location = new Point(0, pbx.Image.Height * i);
    //add to form:
    this.Controls.Add(pbx);
}

谢谢你的回复。VS向
pbxCollection.Add(img)显示红色涂鸦
并且pbxCollection不是图像集合的列表。嘿,对不起,可能它正在工作。我还没有设置表单上图片框的位置(刚刚声明)。您知道如何设置它们。您必须更改每个图片框的位置,您可以通过pb设置。左=10;pb.Top=10;您还需要设置图片框的大小,如pb.Width=50;pb.高度=50@Adil仍然没有加载。请看我的编辑。抱歉,研讨会反应太晚。嘿,对不起,也许它正在工作。我还没有设置表单上图片框的位置(刚刚声明)。你知道怎么设置吗?还是不加载。请看我的编辑。抱歉在研讨会上反应太晚。如果你确实需要“我”,你最好使用for循环。@Carra不,我不需要“我”(如果没有必要),它只是在看到答案后编辑的。我只需要在foreach循环中得到一个答案,我想我得到了,但我不知道如何在表单中设置PictureBox的位置。例如-->10个图片框,5个顶部和5个底部。使用表格布局并将图片框添加到其控件中。@Carra我需要动态执行此操作(所有操作)。我不知道。不管怎样,我找到了窍门。诀窍是首先使用所需的控件设计表单,并参考program.cs:)很高兴看到它能工作。您可以通过代码将控件添加到tablelayout,只需将其添加到其控件即可。如果要将它们拆分为两列或更多列,则更容易:)
var i = 0;
foreach (var pbx in pbxCollection)
{
    pbx.Image = imglst.Images[i++];
    //set location:
    pbx.Location = new Point(0, pbx.Image.Height * i);
    //add to form:
    this.Controls.Add(pbx);
}