2013-07-24 80 views
1

我有一個簡單的形式與像10圖片框:pictureBox1pictureBox2pictureBox3 ...乘圖片框

我必須跟10張相似圖片的文件夾:image1image2image3 ...

現在我足夠聰明,知道我不想硬編碼pictureBox1.ImageLocation = image1pictureBox2.ImageLocation = image2 ......相反,我需要創建一些循環或陣列來填充我的圖片盒和它們各自的圖像,但我不是足夠聰明地弄清楚如何。

喜歡的東西:

for (int i = 0; i < 10; i++) 
{ 
    pictureBox[i].ImageLocation = image[i]; 
} 

最後,我希望這個項目將動態擴展,如果我有一個文件,說12幅圖像,程序會簡單地創建12個圖片框,並加載圖像。有一點幫助會很大。

+0

有點難以幫助你與該信息。你怎麼知道你會處理多少個圖片框?我認爲這是第一步。所以你可以限制你的循環。 – DontVoteMeDown

回答

0

你有什麼會粗糙的工作,但我會建議一個列表。

List<PictureBox> pictureBoxes = new List<PictureBox>(); 
List<Image> images = new List<Image>(); 

//code to populate your lists 

for (int i = 0; i < pictureBoxes.Count; i++) 
{ 
    pictureBoxes[i].Image = images[i]; 
} 

如果你想確保你有你的PictureBox名單足夠的圖像,你可以提前檢查的時間:

if (images.Count >= pictureBoxes.Count) 
{ 
    for (int i = 0; i < pictureBoxes.Count; i++) 
    { 
     pictureBoxes[i].Image = images[i]; 
    } 
} 

...或用完之前填寫的很多,你可以圖片。

for (int i = 0; i < pictureBoxes.Count && i < images.Count; i++) 
{ 
    pictureBoxes[i].Image = images[i]; 
} 


編輯: 所以,如果你想使用字符串來設置圖像的位置,而不是你能做到這一點。檢查了這一點:

List<PictureBox> pictureBoxes = new List<PictureBox>(); 
    List<string> imageLocations = new List<string>(); 

    private void Form1_Load(object sender, EventArgs e) 
    { 
    PictureBox PB1 = new PictureBox(); 
    PB1.Location = new Point(0, 0); 
    PB1.Size = new Size(144, 197); 
    Controls.Add(PB1); 
    PictureBox PB2 = new PictureBox(); 
    PB2.Location = new Point(145, 0); 
    PB2.Size = new Size(327, 250); 
    Controls.Add(PB2); 

    pictureBoxes.Add(PB1); 
    pictureBoxes.Add(PB2); 

    imageLocations.Add(@"C:\PicExample\image1.jpg"); 
    imageLocations.Add(@"C:\PicExample\image2.jpg"); 

    for (int i = 0; i < pictureBoxes.Count && i < imageLocations.Count; i++) 
    { 
     pictureBoxes[i].ImageLocation = imageLocations[i]; 
    } 
    } 

PICTURES!


編輯迭代創建 PictureBoxe列表:

如果你想不必擔心硬編碼的列表(和你的圖片框會相同的大小),你可以做這樣的事情:

for (int i = 0; i < HoweverManyPictureBoxesYouWant; i++) 
{ 
    PictureBox PB = new PictureBox(); 
    PB.Name = "PB" + i.ToString(); 
    PB.Location = new Point(250 * i, 0); //Edit this as you see fit for location, i'm just putting them in a row 
    PB.Size = new Size(250, 250); 
    PB.ImageLocation = @"C:\PicExample\image" + i.ToString() + ".jpg"; 
    Controls.Add(PB); 
    pictureBoxes.Add(PB); //You only need to do this if you want the PB's in a list for other reasons than setting the image location 
} 
+0

啊!我開始獲得「圖片」。如何將列表指向圖像文件位置,還是僅僅默認項目「調試」文件夾?謝謝 – eltel2910

+0

已編輯!另外,好雙關語。 =)哈哈... –

+0

是PictureBox PB1 = new PictureBox();動態添加圖片框,而不是我必須在執行代碼之前將它們放在窗體上? – eltel2910