resources.ApplyResources(...)不工作 - 思考?

时间:2017-12-12 18:17:20

标签: c# winforms localization

我正在一个小型测试应用程序中使用ComponentResourceManager,因为我需要修复以前在现有的,更大的Winforms应用程序中自动生成的本地化,以便手动实现 - 以便手动插入所有字符串每当有人打开表单设计器时,进入资源文件都不会受到影响。

为了这个测试,在表格上有一个按钮控件。我想使用存储在资源文件中的按钮属性来设置按钮属性。如果我寻找属性并直接设置它们,这很好。

ResourceManager resourceManager = new ResourceManager("LocalizationTest1.buttonProps", typeof(Form1).Assembly);
button1.Text = resourceManager.GetString("button1.Text");
button1.Location = (Point)(resourceManager.GetObject("button1.Location"));

但是,尝试使用ApplyResources(如下所示)不起作用。

ComponentResourceManager componentResourceManager = new ComponentResourceManager(typeof(Form1));
componentResourceManager.ApplyResources(this.button1, "button1");

资源名称button1.Text和button1.Location在资源设计器中旁边都有the resource name 'button1...' is not a valid identifier也可能是相关的。

到目前为止,我无法在网上找到任何相关内容,因此我们将非常感谢任何可能提供帮助的想法。

1 个答案:

答案 0 :(得分:0)

当组件资源管理器没有将资源文件名或根名称作为参数时,应该已经实现了这一点 - 将您的资源库名称命名为与表单相同。即Form1.cs,Form1.resx,Form1.fr.resx等

那就是它。

感谢Hans的"听起来以前与Form1相关联的.resx文件不再与表单相关联。我想象你做了一些重命名文件。"评论。它没有说清楚解决方案,但它帮助我找到了解决方案。我希望这能帮助那些也没有早日实现这一目标的人。