循环使用一组图像资源(.resx)

时间:2012-07-24 11:59:25

标签: c# resources resx

我在单独的.resx文件中有3组9张图像,我正在试图弄清楚如何将单个图像循环到9个静态图片框中。

Loop through all the resources in a .resx file

我查看了上面链接中的一些解决方案,比如使用ResXResourceReader,但是当我使用GetEnumerator方法时,它会出现解析错误。

当我使用ResourceSet resourceSet = MyResourceClass.ResourceManager.GetResourceSet(CultureInfo.CurrentUICulture, true, true);行时,ResourceManager类中没有Form的定义,或者在创建自己的GetResourceSet方法时没有ResourceManager方法的定义}。

实际上有一个名为CreateFileBasedResourceManager的方法,我已经涉足过了,但事实上我告诉我除了目录之外我还不太了解它所需的参数。

我还看了一些涉及程序集的解决方案,并在运行时检索正在执行的图像程序集,但我认为这有点超出了我的深度。

任何人都可以告诉我前两种方法我做错了什么,或者可能是完全不同的东西?

2 个答案:

答案 0 :(得分:2)

查看MSDN,你应该可以像这样迭代RESX文件中的值:

string resxFile = @".\CarResources.resx";


// Get resources from .resx file.
  using (ResXResourceSet resxSet = new ResXResourceSet(resxFile))
  {
     // Retrieve the image.
     Object image =  resxSet.GetObject("NAMEOFFILE", true);
  }

如果要迭代RESX文件中的所有对象,可以执行以下操作:

using (ResXResourceReader resxReader = new ResXResourceReader(resxFile))
  {
     foreach (DictionaryEntry entry in resxReader) {
        // entry.Key is the name of the file
        // entry.Value is the actual object...add it to the list of images you were looking to keep track of
     } 
  }

可以找到更多here

答案 1 :(得分:2)

我知道这是一个老问题,但今天我遇到了同样的问题,并解决了设置BasePath属性的问题,如下所示:

oResReader = new ResXResourceReader(strInputFile);
oResReader.BasePath = Path.GetDirectoryName(strInputFile);

我找到了这个解决方案here