2009-05-11 19 views
5

आईडी के आधार पर मैं अपने जीयूआई में एक छवि स्वचालित रूप से लोड करना चाहता हूं। ऐसा करने के लिए मैं विजुअल स्टूडियो 2008 (सी # का उपयोग कर) में resource.resx फ़ाइल से सभी छवियों को प्राप्त करने में सक्षम होना चाहता हूं। मैं जानता हूँ कि मैं अगर मैं जानता हूँ कि वे क्या कर रहे हैं एक समय में एक प्राप्त करने में सक्षम हूँ:सभी (Properties.Resources) को एक शब्दकोश में संग्रहीत करने के लिए

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

हालांकि मैं क्या तलाश कर रहा हूँ इन पंक्तियों के साथ है ...

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

उत्तर

11

बस Linq (टीएम)

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

मुझे यह पसंद है, खासकर अगर वहाँ resource.resx फ़ाइल में अन्य डेटा प्रकार के होते हैं का उपयोग करें। मैंने अभी तक लिंक का अध्ययन नहीं किया है, इसलिए मुझे लगता है कि यह इस कार्य को करने के लिए कोड उत्पन्न करेगा। किसी भी विचार से उपरोक्त उत्तर से गति में अंतर क्या होगा? मुझे लगता है कि यह नगण्य होगा, लेकिन हमेशा पूछना सर्वोत्तम होगा। जवाब के लिए धन्यवाद! – Billy

+0

कोई कोडजन नहीं है, यह कोड है। गति के लिए, यह एक ही ballpark में होना चाहिए। –

+0

आपकी मदद के लिए धन्यवाद शै! – Billy

1

ठीक है यह लगता है काम करने के लिए, हालांकि मैं अन्य उत्तरों का स्वागत करता हूं।

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; 
     } 
    } 
} 
संबंधित मुद्दे