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
作者:DotNeter-Hpf
出处:https://www.cnblogs.com/DotNeter-Hpf/p/16620495.html
版权:本作品采用「署名-非商业性使用-相同方式共享 4.0 国际」许可协议进行许可。
客官,点个推荐再走可好
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 全程不用写代码,我用AI程序员写了一个飞机大战
· DeepSeek 开源周回顾「GitHub 热点速览」
· 记一次.NET内存居高不下排查解决与启示
· MongoDB 8.0这个新功能碉堡了,比商业数据库还牛
· .NET10 - 预览版1新功能体验(一)