2012-07-18 182 views
1

我已經在我的項目很多pictureboxes,並想知道是否有代碼,可以很容易在C#它們之間進行切換,例如:如何在相框之間切換?

// I dont' want to have to do this all the time 
pictureBox38.Image = slagalica.Properties.Resources.grn_tick; 
pictureBox39.Image = slagalica.Properties.Resources.grn_tick; 

// I want something like this 
int n = 38 
pictureBox(n).Image = slagalica.Properties.Resources.grn_tick; 
pictureBox(n+1).Image = slagalica.Properties.Resources.grn_tick; 

這可能嗎?任何代碼是受歡迎的。

+1

你究竟想要做什麼?分配相同的圖像到所有的圖片框?或者只有38和39? – svick 2012-07-18 22:26:50

回答

1

你可以通過所有的控制循環,並設置應用到這些,這是pictureboxes:

foreach(Control control in Controls) 
{ 
    if (control is PictureBox)  
     ((PictureBox)control).Image = slagalica.Properties.Resources.grn_tick; 
} 

或者,您可以創建自定義圖片框,並使用它,而不是默認pictureboxes:

public class SlagalicaPictureBox : PictureBox 
{ 
    public SlagalicaPictureBox() 
    { 
     Image = slagalica.Properties.Resources.grn_tick; 
    } 
} 
-1
while(n <= (number of pics)){ 
n++ 
pictureBox(n).Image = slagalica.Properties.Resources.grn_tick; 
} 

是的,我知道這是Objective-C,但你得到的主要想法

0

你可能想創建列表圖片框。然後,你就可以寫類似pictureBoxes[0].Image=img;

0

它們添加到列表,並使用索引,例如List<PictureBox>PictureBox[]

var dir = new System.IO.DirectoryInfo(imagePath); 
List<FileInfo> images = dir.GetFiles("*.jpg", System.IO.SearchOption.AllDirectories).ToList(); 
List<PictureBox> pictures = new List<PictureBox>(); 
foreach (FileInfo img in images) { 
    PictureBox picture = new PictureBox(); 
    picture.Image = Image.FromFile(img.FullName); 
    pictures.Add(picture); 
} 

現在CA通過索引來訪問的照片,例如:

var rnd = new Random(); 
int imgIndex = rnd.Next(0, 38); 
PictureBox img = pictures[imgIndex]; 

或循環

for(int i=0; i<38; i++) 
{ 
    PictureBox img = pictures[i]; 
} 

編輯:如果你只是想找到所有PictureBoxes表單上,您可以使用Enumerable.OfType進行濾波和相應注塑控制:

IEnumerable<PictureBox> allPictures = this.Controls.OfType<PictureBox>(); 
foreach(var pic in allPictures) 
{ 
    //.... 
} 
0

肯定會考慮什麼Lazyberezovsky職位。但是,如果您想快速遍歷控件,則還可以構建控件數組。

您可以輕鬆地做到這一點:

List<PictureBox> list = new List<PictureBox>(); 
list.Add(pictureBox38); 
list.Add(pictureBox39); 

然後你可以遍歷它們如下:

foreach (PictureBox pb in list) { 
    pictureBox.Image = slagalica.Properties.Resources.grn_tick; 
} 

如果你想更聰明,你甚至可以創建一個數組與指定的大小和做同樣的事情。

PictureBox[] pb_array = new PictureBox[50]; 
pb_array[38] = pictureBox38;