2009-05-11 13 views
5

Basato su un ID Vorrei caricare automaticamente un'immagine nella GUI. Per fare questo mi piacerebbe essere in grado di ottenere tutte le immagini dal file Resources.resx in Visual Studio 2008 (utilizzando C#). So di essere in grado di ottenere uno alla volta se so quello che sono:Ottieni tutti (Properties.Resources) da memorizzare in un dizionario

Image myPicture = Properties.Resources.[name of file]; 

Tuttavia quello che sto cercando è in questo senso ...

foreach(Bitmap myPicture in Properties.Resources) {Do something...} 

risposta

11

Basta utilizzare LINQ (tm)

ResourceManager rm = Properties.Resources.ResourceManager; 

ResourceSet rs = rm.GetResourceSet(new CultureInfo("en-US"), true, true); 

if (rs != null) 
{ 
    var images = 
    from entry in rs.Cast<DictionaryEntry>() 
    where entry.Value is Image 
    select entry.Value; 

    foreach (Image img in images) 
    { 
    // do your stuff 
    } 
} 
+0

mi piace questo, soprattutto se ci sono altri tipi di dati nel file resource.resx. Non ho ancora studiato Linq, quindi presumo che questo generi codice per svolgere questo compito. Qualche idea di quale sarà la differenza di velocità dalla risposta sopra? Immagino che sarà trascurabile, ma è sempre meglio chiedere. Grazie per la risposta! – Billy

+0

non ci sono codegen, questo è il codice. Per quanto riguarda la velocità, dovrebbe essere nello stesso campo da baseball. –

+0

Grazie per il tuo aiuto Shay! – Billy

1

Ok questo sembra per lavorare, tuttavia, accolgo con favore altre risposte.

ResourceManager rm = Properties.Resources.ResourceManager; 

ResourceSet rs = rm.GetResourceSet(new CultureInfo("en-US"), true, true); 

if (rs != null) 
{ 
    IDictionaryEnumerator de = rs.GetEnumerator(); 
    while (de.MoveNext() == true) 
    { 
     if (de.Entry.Value is Image) 
     { 
     Bitmap bitMap = de.Entry.Value as Bitmap; 
     } 
    } 
} 
Problemi correlati