C# Winform软件多语言(汉语、英语。。。)界面的切换,低耦合

Winform软件多语言切换,个人见解,降低软件对语言展示的耦合度。

1、设计图(自己瞎画的呵呵)

2、做的小demo,界面如下

3、下面是代码展示部分

1)Form1代码展示

 1 namespace WindowsFormsApplication1
 2 {
 3     public partial class Form1 : Form
 4     {
 5         public Form1()
 6         {
 7             InitializeComponent();
 8             SetLanguage();
 9         }
10
11         private void SetLanguage()
12         {
13             this.lbUserName.Text = GlobalData.GlobalLanguage.Login_UserName;
14             this.lbPwd.Text = GlobalData.GlobalLanguage.Login_UserPwd;
15             this.btnLogin.Text = GlobalData.GlobalLanguage.Login_Login;
16         }
17     }
18 }

2)GlobalData类代码展示

 1 namespace WindowsFormsApplication1
 2 {
 3     public class GlobalData
 4     {
 5         /// <summary>
 6         /// 系统语言(Chinese(中文),English(英文)。。。)
 7         /// </summary>
 8         public static string SystemLanguage = System.Configuration.ConfigurationManager.AppSettings["Language"];
 9
10         private static Language globalLanguage;
11         public static Language GlobalLanguage
12         {
13             get
14             {
15                 if (globalLanguage == null)
16                 {
17                     globalLanguage = new Language();
18                     return globalLanguage;
19                 }
20                 return globalLanguage;
21             }
22         }
23
24     }
25 }

3)Language类代码展示

 1 namespace WindowsFormsApplication1
 2 {
 3     public class Language
 4     {
 5         #region 登陆界面
 6         public string Login_UserName = "";
 7         public string Login_UserPwd = "";
 8         public string Login_Login = "";
 9         #endregion
10
11         protected Dictionary<string, string> DicLanguage = new Dictionary<string, string>();
12         public Language()
13         {
14             XmlLoad(GlobalData.SystemLanguage);
15             BindLanguageText();
16         }
17
18         /// <summary>
19         /// 读取XML放到内存
20         /// </summary>
21         /// <param name="language"></param>
22         protected void XmlLoad(string language)
23         {
24             try
25             {
26                 XmlDocument doc = new XmlDocument();
27                 string address = AppDomain.CurrentDomain.BaseDirectory + "Languages\\" + language + ".xml";
28                 doc.Load(address);
29                 XmlElement root = doc.DocumentElement;
30
31                 XmlNodeList nodeLst1 = root.ChildNodes;
32                 foreach (XmlNode item in nodeLst1)
33                 {
34                     DicLanguage.Add(item.Name, item.InnerText);
35                 }
36             }
37             catch (Exception ex)
38             {
39                 throw ex;
40             }
41         }
42
43         public void BindLanguageText()
44         {
45             Login_UserName = DicLanguage["Login_UserName"];
46             Login_UserPwd = DicLanguage["Login_UserPwd"];
47             Login_Login = DicLanguage["Login_Login"];
48         }
49     }
50 }

4)App.config代码展示

1 <?xml version="1.0" encoding="utf-8" ?>
2 <configuration>
3   <appSettings>
4     <!-- Language的值只能是Chinese(中文),English(英文) -->
5     <add key="Language" value="English"/>
6   </appSettings>
7 </configuration>

5)English.xml代码展示

1 <?xml version="1.0" encoding="utf-8" ?>
2 <English>
3   <Login_UserName>UserName:</Login_UserName>
4   <Login_UserPwd>Password:</Login_UserPwd>
5   <Login_Login>Login</Login_Login>
6 </English>

6)Chinese.xml代码展示

1 <?xml version="1.0" encoding="utf-8" ?>
2 <Chinese>
3   <Login_UserName>用户名:</Login_UserName>
4   <Login_UserPwd>密码:</Login_UserPwd>
5   <Login_Login>登录</Login_Login>
6 </Chinese>

4、如果想要换法语则只需要在App.config中配置换成French,然后再添加一个French.xml,内容和其他语言模板一样把内容换成法语则可。

5、OK。

时间: 2024-08-04 16:25:00

C# Winform软件多语言(汉语、英语。。。)界面的切换,低耦合的相关文章

WinForm软件多语言版本实现

摘要:本文旨在实现对winForm程序的多语言设置,包含自定义控件的多语言设置. 实现步骤 1.添加 using System.Threading; using System.Globalization; 2.设置winForm 程序Localizable属性为true 更改Language属性为要改变的语言,在设计界面对需要更改语言的控件进行更改,解决方案资源管理中会自动生成相应的资源配置文件,*.zh-CN.resx(中文) *.en.resx(英文).语言代码表见备注. 3.设置两个But

Winform软件,不要在线程里操作UI

对于Winform软件,不要在线程里操作UI,不要相信:StartForm.CheckForIllegalCrossThreadCalls = false; 于是,把所有的代码都改成主线程委托调用的方式 private delegate void SetTextHandle(string id, string value); private void ThreadSetText(string id, string value) { this.Controls.Find(id, true)[0].

更改邮件发送语言为英语,解决编码为UTF8邮箱注册账号,邮件内容乱码问题

Change email English language, code for UTF8 mailbox registered account, email content garbled. 1. code analysis 乱码分析 通过对中文编码的邮件服务器使用原来的系统(GB2312) The original system used by the mail server encoding for the Chinese code (GB2312) 我使用outlook.com的邮箱(UT

CAMTEK_PEPS_WIREV5.2.32 慢走丝线切割软件,多语言含简体中文版,带多种机床后处理\

切割软件 Camtek PEPS v5.3.12 MultiLanguage-ISO 2CDCAMTEK_PEPS_WIREV5.2.32 慢走丝线切割软件,多语言含简体中文版,带多种机床后处理\ Camtek 自1983年成立以来,PEPS CADCAM软件就受到用户的一致好评.以下是PEPS CADCAM主要产品. 铣削软件 支持2-3轴铣削加工与多轴多面体加工包括钻削,平面铣,挖槽,轮廓铣等加工方式,提供参数化通用实体库进行加速加工. 三维曲面铣削 应用于3轴数控铣床与加工中心以实体建模技

winform设计一个登录界面和修改密码的界面-自动切换窗体(问题[已解] 望一起讨论)(技术改变世界-cnblog)

http://www.cnblogs.com/IAmBetter/archive/2012/01/14/2322156.html winform设计一个登录界面和修改密码的界面-自动切换窗体(问题[已解] 望一起讨论)(技术改变世界-cnblog) 需求 登录界面: 1.要求 密码 文本可以显示和隐藏 字符 password属性 2.显示输入按钮button 要求显示输入按钮 按下去之后,实现 名字变成“取消”,取消之后密码又是隐藏的 3.要求只能输入错误 3次,3次之后自动退出 4.要求点击修

DSL-领域特定语言(英语:domain-specific language、DSL)

领域特定语言(英语:domain-specific language.DSL)指的是专注于某个应用程序领域的计算机语言. 原文地址:https://www.cnblogs.com/feng9exe/p/10064591.html

易语言EXUI登录界面(附带缓动效果)源码

易语言EXUI登录界面(附带缓动效果)源码,调用了精易模块. 登录的时候有动效果,可以更换配色,按钮样式和背景图片,界面做的挺好看. 下载地址:https://6yunpan.pipipan.com/fs/17009107-357509637 原文地址:https://www.cnblogs.com/xiazai/p/10626497.html

软件建模语言

--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- 软件建模语言: 软件建模需要交流,所

centos编辑界面和图形界面登陆切换设置

输入命令 vi /etc/inittab 到最后一行,把5改成3 保存退出. 各数字的含义: #   0 - halt (Do NOT set initdefault to this)          停止(不设initdefault这个) #   1 - Single user mode              单用户模式 #   2 - Multiuser, without NFS (The same as 3, if you do not have networking)