在多语言表单中编辑ImageList时出错

时间:2015-12-02 22:08:07

标签: c# forms multilingual imagelist resource-files

我刚刚遇到一个错误,并在2008年找到了another person reporting the error - 没有解决方案。我想我也会在这里发布,希望它在过去7年里得到解决。

在C#中,在Visual Studio 2013中,当您在表单设计器中编辑ImageList时,二进制数据将以表单的默认资源文件&lt; form_name&gt; .resx存储在ImageStream中。如果您查看此资源文件的设计者,在&#39;其他&#39;下,您将看到&lt; ImageList_name&gt; .ImageStream的行。您可以查看此资源文件的代码,并查看<data name="<ImageList_name>.ImageStream"...的XML项,其中<value>标记包含列表中图像的二进制数据。

问题在于,当您编辑此列表时,例如将图像添加到列表中,默认资源文件的图像流数据会发生变化,但任何其他语言都会发生变化。资源文件的图像流数据未更新。因此,当您运行应用程序时,语言设置为匹配其他资源文件之一(例如&lt; form_name&gt; .ru.resx for Russian),当表单初始化时,如果出现类似的情况,您将收到异常:< / p>

this.<ImageList_name>.Images.SetKeyName(20, "");

这里我添加了第21张图片,但是当此行针对俄罗斯资源文件运行时,只有20张图片的二进制数据,因此会抛出异常。

我通过从所有多语言资源文件中删除ImageStream定义来解决此问题。这可以保证从默认资源文件中提取ImageStream。

我想知道是否有办法将对资源文件所做的更改传播到其他语言&#39;文件。我对字符串有一般的期望,因为我希望能够将新字符串添加到默认文件中并将该字符串添加到其他语言中。文件也是如此,有些默认&#34;稍后填写翻译&#34;值。除此之外,对于这个问题,有没有比我使用过的更优雅的解决方案?

谢谢,

0 个答案:

没有答案