Winform程序多种语言切换

本文档详细介绍了如何在Winform程序中实现多语言支持,包括创建配置文件、资源库、管理语言切换,以及解决启动配置导致的运行错误。通过LanguageManager类封装方法,便于在多个窗体间共享和切换语言,同时提供了关键代码片段和资源文件的配置示例。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

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

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

DotNeter-Hpf

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值