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

时间:2012-11-07 05:27:59

标签: c# .net winforms picturebox imagelist

在我的项目中,我收集了PictureBoxes和一个填充的ImageList。我想使用foreach循环使用ImageList中的每个Image填充每个pictureBox。我知道如何使用For循环,但我不知道如何使用foreach循环。我只是出于知识目的而要求这样做。我认为这可以使用Linq内部的foreach循环来实现,但我是初学者,所以我不知道该怎么做。

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

        for (intimgcount = 0; intimgcount < intMaxPics; intimgcount++)
        {                
            pbxCollection[intimgcount].Image = imglst.Images[intimgcount];          
        }     

我想在foreach循环中使用的代码是:

        var pbxCollection = new List<PictureBox>();  //PictureBox collection

编辑:如何在表格中设置Picture Box集合的位置?

我试过了:

        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);
        }  

2 个答案:

答案 0 :(得分:0)

你可以这样做。

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

答案 1 :(得分:0)

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

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);
}