【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");
        }

 

posted @ 2017-04-20 10:21  发明创造小能手  阅读(497)  评论(0编辑  收藏  举报
levels of contents