2012-11-07 54 views
0

在我的項目中,我收集了PictureBoxes和填充的ImageList。我想使用foreach Loop來填充ImageList中每個圖像的每個圖像框。我知道如何使用For循環,但我不知道如何使用foreach循環來完成它。我只是爲了知識目的而問這個問題。我認爲這可以通過在foreach循環中使用Linq來實現,但我是初學者,所以我不知道如何去做。使用Foreach循環填充圖片框與圖像

我試着在for循環下面的代碼:

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

,我想在foreach循環中使用的代碼是:

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

編輯:如何設置圖片框集合的位置在形式?

我想:

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

如果你確實需要一個「我」你可能會更好的使用for循環。 – Carra

+0

@Carra不,我不需要「我」(如果沒有必要),它只是在看到答案後才編輯。我只需要在foreach循環中得到一個答案,我認爲我得到了答案,但是我不知道如何在窗體中設置PictureBox的位置。例如 - > 10個圖片框,5個頂部和5個底部。 –

+0

使用tablelayout並將您的picturebox添加到其控件。 – Carra

回答

0

你可以這樣來做。

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

謝謝你的迴應。 VS顯示紅色塗鴉到'pbxCollection.Add(img);'和pbxCollection不是圖像集合列表。 –

+0

你現在可以檢查嗎? – Adil

+2

..你似乎是在圖片列表中添加一個'PictureBox' .. –

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

它沒有給出任何錯誤,但圖像未加載 –

+0

嘿,對不起,也許它工作。我沒有把位置設置在窗體上的圖片框上(剛剛聲明)。你知道如何設置它們嗎? –

+0

我更新了我的回答 – Ria