我在单独的.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
的方法,我已经涉足过了,但事实上我告诉我除了目录之外我还不太了解它所需的参数。
我还看了一些涉及程序集的解决方案,并在运行时检索正在执行的图像程序集,但我认为这有点超出了我的深度。
任何人都可以告诉我前两种方法我做错了什么,或者可能是完全不同的东西?
答案 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