2009-05-11 19 views
5

Dựa trên ID, tôi muốn tự động tải Hình ảnh vào GUI của tôi. Để thực hiện điều này, tôi muốn có thể lấy tất cả các hình ảnh ra khỏi tệp Resources.resx trong Visual Studio 2008 (sử dụng C#). Tôi biết tôi có thể nhận được cùng một lúc nếu tôi biết những gì họ đang:Nhận tất cả (Properties.Resources) để được lưu trữ trong một Từ điển

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

Tuy nhiên những gì tôi đang tìm kiếm nằm dọc theo những dòng này ...

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

Trả lời

11

Chỉ cần sử dụng 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

Tôi thích video này, đặc biệt là nếu có nhiều loại dữ liệu khác trong hồ sơ resource.resx. Tôi chưa học Linq, vì vậy tôi giả định rằng điều này sẽ tạo ra mã để làm nhiệm vụ này. Bất kỳ ý tưởng những gì sự khác biệt về tốc độ sẽ được từ câu trả lời ở trên? Tôi đoán nó sẽ không đáng kể, nhưng luôn luôn tốt nhất để hỏi. Cảm ơn bạn đã trả lời! – Billy

+0

không có codegen, đây là mã. Đối với tốc độ, nó phải được trong cùng một ballpark. –

+0

Cảm ơn sự giúp đỡ của bạn Shay! – Billy

1

Ok này dường như để làm việc, tuy nhiên tôi sẽ hoan nghênh các câu trả lời khác.

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; 
     } 
    } 
} 
Các vấn đề liên quan