2009-05-11 14 views
5

Basierend auf einer ID möchte ich automatisch ein Bild in meine GUI laden. Um dies zu tun, möchte ich in der Lage sein, alle Bilder aus der Resources.resx-Datei in Visual Studio 2008 (mit C#) zu erhalten. Ich weiß, ich bin in der Lage einer nach dem anderen zu bekommen, wenn ich weiß, was sie sind:Alle (Properties.Resources) in einem Verzeichnis gespeichert werden

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

Doch was ich suche in dieser Richtung ist ...

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

Antwort

11

Verwenden Sie einfach 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

Ich mag dieses, vor allem, wenn es andere Datentypen in der resource.resx Datei sind. Ich habe Linq noch nicht studiert, also nehme ich an, dass dies Code generieren wird, um diese Aufgabe zu erledigen. Irgendeine Idee, was der Unterschied in der Geschwindigkeit von der obigen Antwort sein wird? Ich schätze, es wird vernachlässigbar sein, aber immer am besten zu fragen. Danke für die Antwort! – Billy

+0

gibt es keinen Code, das ist der Code. Wie für die Geschwindigkeit sollte es im selben Stadion sein. –

+0

Vielen Dank für Ihre Hilfe Shay! – Billy

1

Ok dies scheint zu arbeiten, jedoch würde ich andere Antworten begrüßen.

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; 
     } 
    } 
} 
Verwandte Themen