我有一个Windows窗体应用程序项目,并在主窗体上我有一个菜单条。在这个菜单条中的一些地方可以选择各种语言。例如,如果用户选择“英语”,则该主表单上的所有内容(以及未来的其他内容)都应该变成英语。切换语言(的CultureInfo /全球化)不影响ToolStripMenuItems
我把这个教程: click
这正常工作与唱片公司等,但它不与工具条菜单项,在所有的工作。他们只是保留他们的默认文本。
我试图两行添加到ChangeLanguage
方法:
private void ChangeLanguage(string lang)
{
foreach (Control c in this.Controls)
{
ComponentResourceManager resources = new ComponentResourceManager(typeof(Form1));
resources.ApplyResources(c, c.Name, new CultureInfo(lang));
ComponentResourceManager res2 = new ComponentResourceManager(typeof(ToolStripMenuItem));
res2.ApplyResources(c, c.Name, new CultureInfo(lang));
}
}
但它失败,并说:
找不到适合指定区域性或中性文化的任何资源。确保在编译时“System.Windows.Forms.ToolStripMenuItem.resources”已正确嵌入或链接到程序集“System.Windows.Forms”中,或者所有需要的附属程序集均可加载并完全签名。
不知道如何进行 - 知道的任何帮助。
谢谢,这是有效的。这只会改变菜单栏中下拉项目的语言,而不是菜单条的“标题”,或者如果我在第一个下拉菜单中有一个额外的下拉菜单。 – eightx2
这就是我所说的[递归方法](http://www.dotnetperls.com/recursion)。在我的编辑中调用该方法,而不是第二个foreach循环。这将确保您的菜单结构的所有图层都用于本地化。 – dwonisch
谢谢,我设法使用你的代码,所以它为我工作。 – eightx2