2

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

循环遍历 .resx 文件中的所有资源

我浏览了上面链接中的一些解决方案,例如 using ResXResourceReader,但是当我使用该GetEnumerator方法时会出现解析错误。

当我使用该行时,类内ResourceSet resourceSet = MyResourceClass.ResourceManager.GetResourceSet(CultureInfo.CurrentUICulture, true, true);没有定义,或者当我创建自己的.ResourceManagerFormGetResourceSetResourceManager

实际上有一个CreateFileBasedResourceManager我已经涉足过的方法,但说实话,除了目录之外,我不太了解它需要的参数。

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

谁能告诉我前两种方法做错了什么或者完全不同的东西?

4

2 回答 2

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
     } 
  }

更多可以在这里找到。

于 2012-07-24T13:09:12.750 回答
2

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

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

我在这里找到了这个解决方案

于 2014-05-16T17:24:31.360 回答