Loading

Winform程序多语言切换

1.创建winform程序

第一个窗体
在这里插入图片描述

第二个窗体
在这里插入图片描述

2.新建类库 ConfigurationSettings

从我Demo中拷贝此类库下的所有类

3.配置app.config文件

<configuration>
    <configSections>
        <section name="StartUpConfiguration" 
type="ConfigurationSettings.StartUpConfigSection, ConfigurationSettings" />
    </configSections>
    <StartUpConfiguration>
        <Languages Default ="zh-CN" >
            <add Name ="en-US"/>
            <add Name ="zh-CN"/>
        </Languages>
    </StartUpConfiguration>
</configuration>

如果想每次登录程序都默认英文 Default =“en-US

4.新建类库 StringResources

新建两个资源文件,一个是用来存中文,一个是用来存英文
Resources.resx
Resources.en.resx
这个文件中都是定义的内部类,内部方法,双击两个文件,将访问修饰符全部修改为 public

5.为了方便多窗体调用,将方法封装

主项目下新建文件夹 Language,新建类 LanguageManager.cs,将代码从Demo中粘贴过来

为了方便引入命名空间,主项目把之前的两个类库添加引用

System.Resources.ResourceManager _rm   实例化对象

!!!!! 移动代码的时候一定要看好,第一个参数,看好你的中英文配置是否是在此项目下的资源文件中,必须是主项目名字

添加引用如下

using System.Configuration;
using ConfigurationSettings;
using LanguageConvert.Properties;
using System.Globalization;
using System.Threading;
using System.Resources;

6.主窗体,添加代码

给语言下拉菜单赋数据源

private void Form1_Load(object sender, EventArgs e)
{
            //LanguageConvert
            {
                this.cbxLanguage.DataSource = LanguageManager.Nativevalue;
                this.cbxLanguage.SelectedItem = new 
CultureInfo(LanguageManager.strDefaultLanguage).NativeName;
            }
}

语言下拉菜单,添加代码

private void cbxLanguage_SelectedIndexChanged(object sender, EventArgs e)
 {
            string value = cbxLanguage.Text;

            LanguageManager.ChangeLanguage(value);

            this.Text = LanguageManager.GetByKey("mainForm");
            this.lbl_language.Text = LanguageManager.GetByKey("m_lbl_language");
            this.dgv.Columns["column1"].HeaderText = 
LanguageManager.GetByKey("m_dgv_c1");
            this.ts_btn.Text = LanguageManager.GetByKey("m_ts_btn");
 }

7.Resources.resx Resources.en.resx 添加内容

在这里插入图片描述


[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-hikrhLWH-1644974419618)(en-resource://database/1268:1)]

8.LanguageConvert.Properties.Resources 添加配置

在这里插入图片描述

9.超大Bug

App.config文件中,自动生成了如下代码:

<startup>
    <supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.5" />
</startup>

如果上面这些都配置好了,运行报错
在这里插入图片描述

就是startup这个标签引起的,全部删除,就没有问题

10.下载链接

Demo下载链接: 百度云
提取码:44ry

posted @ 2022-08-24 16:14  DotNeter-Hpf  阅读(702)  评论(0编辑  收藏  举报