2014-04-17 4 views
6

Mi chiedo se non v'è alcun modo per scrivere il seguente codice molto più breve ...l'aggiunta di più variabili a una lista di

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

E poi, c'è un modo per aggiungere tutte quelle variabili a una lista, senza dover eseguire di nuovo lo stesso brutto codice.

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

Il metodo che uso è davvero stupido e speravo che ci fosse un altro modo per farlo. Grazie per l'aiuto!

+0

perché si crea 50 istanze separate, è possibile utilizzare List e il suo indice di ottenere particolare istanza –

risposta

8

È possibile effettuare una raccolta ad hoc in questo modo:

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

e quindi è possibile utilizzare AddRange sulla lista per aggiungerli

listPB.AddRange(pictureBoxen); 

O se listPB viene creato in quel luogo, e contiene solo tali variabili, è possibile:

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

Si noti che questo tipo di sintassi è stato introdotto solo in C# 3, nel 2008, quindi è lecito ritenere che si stia utilizzando quello o superiore.

Per C# 2 e sotto, il looping è il migliore che potrei inventare.

2

utilizzare un ciclo

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

Utilizzare questa:

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

poi

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

Se la lista è il vostro da inizializzare, vorrei utilizzare array in principio :

Se le 50 istanze vengono generate in un altro modo, suggerisco di utilizzare Notepad ++ Find and Replace con Regex.

1

si può fare questo:

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