2014-04-17 56 views
6

,如果有任何的方式寫了下面的代碼短了很多我不知道......添加多個變量列表

public PictureBox pb1; 
public PictureBox pb2; 
public PictureBox pb3; 
..... 
public PictureBox pb50; 

然後,有沒有什麼辦法對所有這些變量添加到列表中,而不必再次執行相同的醜陋代碼。

listPB.add(pb1); listPB.add(pb2);...... ListPB.add(pb50); 

我使用的方法真的很愚蠢,我希望有其他方法可以做到這一點。謝謝您的幫助!

+0

爲什麼你創建50分獨立的情況下,可以使用目錄和索引,以獲得特定實例 –

回答

8

你可以讓一個特設的收集是這樣的:

PictureBox[] pictureBoxen = {pb1, pb2, pb3, ..., pb50}; 

,然後你可以使用AddRange名單上,將它們添加

listPB.AddRange(pictureBoxen); 

或者,如果listPB是在那個地方創建,並只包含這些變量,你可以這樣做:

List<PictureBox> listPB = new List<PictureBox>{pb1, pb2, ..., pb50}; 

請注意,這種語法僅在2008年的C#3中引入,所以假設您使用的是或更高版本是安全的。

對於C#2及更低版本,循環是我能想到的最好的。

2

使用循環

for(int i = 0; i < 10; i++) 
{ 
    PictureBox p = new PictureBox(); 
    listPb.Add(p); 
} 
2

使用此:

public PictureBox pb1,pb2,pb3,pb4....,pb50; 

然後

List<PictureBox> listPB = new List<PictureBox>{pb1, pb2, ..., pb50}; 
1
List<PictureBox> list = new List<PictureBox>(); 
    for(int i = 0; i < 50; i++) 
    { 
    list.add(new PictureBox{ 
     //set properties here.. 
    }); 
    } 
1

如果該列表是你的初始化,我會在開始使用數組:

PictureBox[] pictures = new PictureBox[50]; 
for (int i = 0; i < pictures.Length; i++) 
{ 
    pictures[i] = new PictureBox(); 

    // Do something else 
} 

如果50個實例是通過其他方式生成的,我建議使用Notepad ++ Find and Replace和Regex。

1

,你可以這樣做:

List<PictureBox> listPicture = new List<PictureBox>() { pb1, pb2, pb3, pb4, pb5, etc... };