2009-05-11 10 views
5

Basado en una ID Me gustaría cargar automáticamente una Imagen en mi GUI. Para hacer esto, me gustaría poder obtener todas las imágenes del archivo Resources.resx en Visual Studio 2008 (usando C#). Sé que soy capaz de conseguir uno a la vez si sé lo que son:Obtener todo (Properties.Resources) que se almacenará en un Dictionary

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

Sin embargo lo que estoy buscando es a lo largo de estas líneas ...

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

Respuesta

11

sólo tiene que utilizar 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

me gusta esto, especialmente si hay otros tipos de datos en el archivo resource.resx. Aún no he estudiado a Linq, así que supongo que esto generará código para realizar esta tarea. ¿Alguna idea de cuál será la diferencia de velocidad de la respuesta anterior? Supongo que será insignificante, pero siempre es mejor preguntar. ¡Gracias por la respuesta! – Billy

+0

no hay codegen, este es el código. En cuanto a la velocidad, debería estar en el mismo estadio de béisbol. –

+0

Gracias por su ayuda Shay! – Billy

1

Ok esto parece para estar trabajando, sin embargo, me gustaría recibir otras respuestas.

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; 
     } 
    } 
} 
Cuestiones relacionadas