本地化 Windows 窗体并在运行时更改语言
Posted
技术标签:
【中文标题】本地化 Windows 窗体并在运行时更改语言【英文标题】:Localize Windows Forms and Change the Language at Runtime 【发布时间】:2012-10-15 14:29:34 【问题描述】:我正在关注此链接http://www.dotnetcurry.com/ShowArticle.aspx?ID=174 以。标签/按钮:文本框一切正常,但Datagridview
它不起作用。当我检查资源文件时,法语版本和默认版本文本在那里,但是当我执行它时,最后一个版本正在加载..当我从列表框中选择时,它没有显示默认的英语版本。
如何使用上面链接中给出的机制在运行时更改 datagridview 标题文本?
【问题讨论】:
@Roy Dictus:如何使用上面链接中给出的机制在运行时更改 datagridview 标题文本??? 绑定了吗。即名称和值是基础数据源中的列名? 你不能只做 grid.Columns[0].HeaderText = "Whatever" 吗? @Roy Dictus:我在想,最好通过资源文件来做。 @Tony Hopkinson:在设计视图中,我可以分别看到 fench 和英文版本,但是当我执行它时,我只看到一个版本。 【参考方案1】:该代码只能找到添加到表单的 Controls 集合中的控件。但是 DataGridView 列不会像那样添加,它会添加到 DataGridView 控件中。您需要改进发布的代码,以便它还可以迭代它找到的任何 DGV 的列。像这样:
private void ChangeLanguage(string lang)
var ci = new CultureInfo(lang);
System.Threading.Thread.CurrentThread.CurrentUICulture = ci;
foreach (Control c in this.Controls)
ComponentResourceManager resources = new ComponentResourceManager(this.GetType());
resources.ApplyResources(c, c.Name, ci);
if (c.GetType() == typeof(DataGridView))
var dgv = (DataGridView)c;
foreach (DataGridViewColumn col in dgv.Columns)
resources.ApplyResources(col, col.Name);
【讨论】:
@Hans Passant:是的,它也适用于我。我犯的错误,是我分配了不同的数据属性名称......非常感谢。以上是关于本地化 Windows 窗体并在运行时更改语言的主要内容,如果未能解决你的问题,请参考以下文章
建议重新。 Windows 窗体应用程序 - “本地”和“网络”模式