Winform界面显示的“语言”切换
1.按正常方式创建目标窗口,并完成界面布局设计。

2.将界面显示内容,按默认“语言”设计。

3.保存默认的“语言”资源文件。
- 选择目标窗口,打开窗口的”属性“页;
- 找到“Language"和“Localizable"属性,设置”Localizable"为“True”。
- 此时,可以找到目标窗口对应的默认资源文件,双击查看。

4. 设计第二种“语言”界面
- 找到目标窗口,属性页中的“Language”,选择要使用的第二种语言(如“英语”);
- 然后重新设计目标窗口中的显示内容:可修改显示内容、布局,不可增/减控件。
- 保存后,可看到新的资源文件:xxxx.en.resx。


5.固定选择“语言”运行界面
- 默认直接运行时,窗口显示风格为默认“语言”显示;
- 若要切换为另一种“语言”显示,则可在窗口运行前,先执行如下代码;
// 在软件启动时,设置显示语言 string lang = "en"; // 英文:en 中文:zh-CN System.Threading.Thread.CurrentThread.CurrentUICulture = new System.Globalization.CultureInfo(lang);

6.动态切换“语言”显示
- 为界面控件添加如下事件响应:
// using System.ComponentModel // using System.Globalization; // using System.Threading; // 当前语言 ComponentResourceManager languageMgr = new ComponentResourceManager(typeof(LangueSelectForm)); // 刷新界面控件 private void RefreshAllControls(Control parentControl) { foreach (Control control in parentControl.Controls) { languageMgr.ApplyResources(control, control.Name); if (control.Controls.Count > 0) { RefreshAllControls(control); } } } private void radioButton1_CheckedChanged(object sender, EventArgs e) { if (radioButton1.Checked) { string lang = "en"; // 切换为 “英语” Thread.CurrentThread.CurrentUICulture = new CultureInfo(lang); this.RefreshAllControls(this); } } private void radioButton2_CheckedChanged(object sender, EventArgs e) { if (radioButton2.Checked) { string lang = "zh-CN"; // 切换为 “中文”(默认) Thread.CurrentThread.CurrentUICulture = new CultureInfo(lang); this.RefreshAllControls(this); } } private void button1_Click(object sender, EventArgs e) { Thread.CurrentThread.CurrentUICulture = CultureInfo.CurrentCulture; // 切换为 默认 this.RefreshAllControls(this); }

7.全局“语言”文本使用
- 在“项目”-Properties,找到 ”Resources.resx“文件(默认资源文件),双击打开查看;
- 添加要全局使用的字符串文件;

- 添加另一个的新”语言“资源文件:右键→添加→类,找到”资源文件;
- 命令为:Resources.en.resx (适用于“英语”语言)
- 编辑这个资源文件,按新的“语言”给需要切换显示的文本输入新语言的“值”

- 在适当的地方,将所选语言的字符串值,赋值给对应的界面显示。


浙公网安备 33010602011771号