【winfrom-多语言】实现多语言切换:使用资源文件
使用资源文件实现多语言切换。
1. 新建一个Form,名为FrmMain。
在界面添加一个MenuStrip和一个Button。
并设置好控件的文本和位置。(Language=(Default))
2. 设置窗体FrmMain属性 :Localizable=true , Languange=英语
并更改控件文本。
这时VS自动生成FrmMain.en.resx文件。
3.切换语言事件代码
private void 中文ToolStripMenuItem_Click(object sender, EventArgs e) { //更改当前线程的 CultureInfo //zh-CN 为中文,更多的关于 Culture 的字符串请查 MSDN Thread.CurrentThread.CurrentUICulture = CultureInfo.GetCultureInfo("zh-CN"); //对当前窗体应用更改后的资源 ApplyResource(); } private void 英文ToolStripMenuItem_Click(object sender, EventArgs e) { //更改当前线程的 CultureInfo //en 为英文,更多的关于 Culture 的字符串请查 MSDN Thread.CurrentThread.CurrentUICulture = CultureInfo.GetCultureInfo("en"); //对当前窗体应用更改后的资源 ApplyResource(); } /// <summary> /// 应用资源 /// ApplyResources 的第一个参数为要设置的控件 /// 第二个参数为在资源文件中的ID,默认为控件的名称 /// </summary> private void ApplyResource() { System.ComponentModel.ComponentResourceManager res = new ComponentResourceManager(typeof(FrmMain)); foreach (Control ctl in Controls) { res.ApplyResources(ctl, ctl.Name); } //菜单 foreach (ToolStripMenuItem item in this.menuStrip1.Items) { res.ApplyResources(item, item.Name); foreach (ToolStripMenuItem subItem in item.DropDownItems) { res.ApplyResources(subItem, subItem.Name); } } //Caption res.ApplyResources(this, "$this"); }