Winform界面显示的“语言”切换

1.按正常方式创建目标窗口,并完成界面布局设计。

image

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

image

3.保存默认的“语言”资源文件。

  • 选择目标窗口,打开窗口的”属性“页;
  • 找到“Language"和“Localizable"属性,设置”Localizable"为“True”。

image 

  •  此时,可以找到目标窗口对应的默认资源文件,双击查看。

image 

image

 

 

4. 设计第二种“语言”界面

  • 找到目标窗口,属性页中的“Language”,选择要使用的第二种语言(如“英语”);
  • 然后重新设计目标窗口中的显示内容:可修改显示内容、布局,不可增/减控件。

image  image 

  • 保存后,可看到新的资源文件:xxxx.en.resx。

image

image

 

 5.固定选择“语言”运行界面

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

image    image

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

image    image

 

7.全局“语言”文本使用

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

image

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

image       image

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

image

 

image   image

 

posted on 2026-03-12 10:30  云梦鸿  阅读(197)  评论(0)    收藏  举报