C# Winform软件多语言(汉语、英语。。。)界面的切换,低耦合
Winform软件多语言切换,个人见解,降低软件对语言展示的耦合度。
1、设计图(自己瞎画的呵呵)

2、做的小demo,界面如下


3、下面是代码展示部分
1)Form1代码展示
namespace WindowsFormsApplication1
{
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
SetLanguage();
} private void SetLanguage()
{
this.lbUserName.Text = GlobalData.GlobalLanguage.Login_UserName;
this.lbPwd.Text = GlobalData.GlobalLanguage.Login_UserPwd;
this.btnLogin.Text = GlobalData.GlobalLanguage.Login_Login;
}
}
}
2)GlobalData类代码展示
namespace WindowsFormsApplication1
{
public class GlobalData
{
/// <summary>
/// 系统语言(Chinese(中文),English(英文)。。。)
/// </summary>
public static string SystemLanguage = System.Configuration.ConfigurationManager.AppSettings["Language"]; private static Language globalLanguage;
public static Language GlobalLanguage
{
get
{
if (globalLanguage == null)
{
globalLanguage = new Language();
return globalLanguage;
}
return globalLanguage;
}
} }
}
3)Language类代码展示
namespace WindowsFormsApplication1
{
public class Language
{
#region 登陆界面
public string Login_UserName = "";
public string Login_UserPwd = "";
public string Login_Login = "";
#endregion protected Dictionary<string, string> DicLanguage = new Dictionary<string, string>();
public Language()
{
XmlLoad(GlobalData.SystemLanguage);
BindLanguageText();
} /// <summary>
/// 读取XML放到内存
/// </summary>
/// <param name="language"></param>
protected void XmlLoad(string language)
{
try
{
XmlDocument doc = new XmlDocument();
string address = AppDomain.CurrentDomain.BaseDirectory + "Languages\\" + language + ".xml";
doc.Load(address);
XmlElement root = doc.DocumentElement; XmlNodeList nodeLst1 = root.ChildNodes;
foreach (XmlNode item in nodeLst1)
{
DicLanguage.Add(item.Name, item.InnerText);
}
}
catch (Exception ex)
{
throw ex;
}
} public void BindLanguageText()
{
Login_UserName = DicLanguage["Login_UserName"];
Login_UserPwd = DicLanguage["Login_UserPwd"];
Login_Login = DicLanguage["Login_Login"];
}
}
}
4)App.config代码展示
<?xml version="1.0" encoding="utf-8" ?>
<configuration>
<appSettings>
<!-- Language的值只能是Chinese(中文),English(英文) -->
<add key="Language" value="English"/>
</appSettings>
</configuration>
5)English.xml代码展示
<?xml version="1.0" encoding="utf-8" ?>
<English>
<Login_UserName>UserName:</Login_UserName>
<Login_UserPwd>Password:</Login_UserPwd>
<Login_Login>Login</Login_Login>
</English>
6)Chinese.xml代码展示
<?xml version="1.0" encoding="utf-8" ?>
<Chinese>
<Login_UserName>用户名:</Login_UserName>
<Login_UserPwd>密码:</Login_UserPwd>
<Login_Login>登录</Login_Login>
</Chinese>
4、如果想要换法语则只需要在App.config中配置换成French,然后再添加一个French.xml,内容和其他语言模板一样把内容换成法语则可。
5、OK。
C# Winform软件多语言(汉语、英语。。。)界面的切换,低耦合的更多相关文章
- 阿里云语音合成(汉语英语)带UI界面的小程序(python)
一,项目说明 将汉文转汉语.英文转英语,同时又有逗号<###English###>,<,,,>和句号<...>标志符用于文件处理.其中英文包含在### 英文 ### ...
- BOLT.NET 学习笔记(一) 开篇 用.net winform 快速开发 炫酷的界面
BOLT.NET 学习笔记(一) 开篇 用.net winform 快速开发 炫酷的界面 bolt 基本介绍 Bolt界面引擎是迅雷公司从2009年开始开发的第四代界面库.迅雷7是首个采用该引擎成功开 ...
- Winform软件,不要在线程里操作UI
对于Winform软件,不要在线程里操作UI,不要相信:StartForm.CheckForIllegalCrossThreadCalls = false; 于是,把所有的代码都改成主线程委托调用的方 ...
- 更改Photoshop 语言为英语(无需语言包)
因为有时看国外教程时,手头上的PS是中文的而教程里的界面是英文的,而且中英菜单顺序在某些地方是不一样的,所以很不方便. 终于找到一个非常完美的方法可以把界面换成英文,而且不需任何语言包. 并且试了在最 ...
- 自己在安装centos 系统时, 是使用英文安装 成功,现在系统语言为英语,如何设置为中文?
作为一个linux菜鸟,遇到的问题可谓真多,在虚拟机VMware上安装好centos系统后,心里甚喜,也连上网络了. 一.遇到的问题 but,火狐浏览器浏览网页出现乱码,也不知道怎么解决?所有的中文都 ...
- winform设计一个登录界面和修改密码的界面-自动切换窗体(问题[已解] 望一起讨论)(技术改变世界-cnblog)
http://www.cnblogs.com/IAmBetter/archive/2012/01/14/2322156.html winform设计一个登录界面和修改密码的界面-自动切换窗体(问题[已 ...
- DSL-领域特定语言(英语:domain-specific language、DSL)
领域特定语言(英语:domain-specific language.DSL)指的是专注于某个应用程序领域的计算机语言.
- 在Winform框架的多文档界面中实现双击子窗口单独弹出或拖出及拽回的处理
在基于DevExpress的多文档窗口界面中,我们一般使用XtraTabbedMdiManager来管理多文档窗口的一些特性,如顶部菜单,页面的关闭按钮处理,以及一些特殊的设置,本篇随笔介绍这些特点, ...
- 虚拟机+ubuntu 图形界面和终端界面的切换
虚拟机环境,在图形界面和文本界面间切换:1 VMWare虚拟机下,由图形界面切换到文本界面,和虚拟机设置有关,默认VM占用Ctrl+Alt为热键,所以由图形界面切换到文本界面的组合键为: Ctrl+ ...
随机推荐
- Windows server 2008 R2中安装MySQL !
我今天打算在Windows server 2008 R2中安装MySQL,可是总是发现ODBC连接器安装错误,无论我采用MySQL的整体安装包,还是单独的ODBC连接器安装文件!! 最后上网搜索了很久 ...
- 透明数据加密 (TDE)常见问题解答
透明数据加密 (TDE)常见问题解答问题任何人只要有权访问加密数据就能对其进行解密吗?TDE 会带来哪些开销?哪些加密算法可与 TDE 一同使用?可以使用第三方加密算法代替 TDE 提供的算法吗?可以 ...
- “全栈2019”Java第四十一章:static关键字
难度 初级 学习时间 10分钟 适合人群 零基础 开发语言 Java 开发环境 JDK v11 IntelliJ IDEA v2018.3 文章原文链接 "全栈2019"Java第 ...
- [AGC006E] Rotate 3x3 树状数组+贪心
Description XFZ在北京一环内有一套房. XFZ房子的地砖呈网格状分布,是一个3∗N3∗N的网格.XFZ在买下这套房时,每个地砖上有一个数字,位置为(i,j)(i,j)的地砖上的数 ...
- vue培训记录
在公司做了一次vue相关的培训,自己整理了一些大纲.供大家参考学习! ### 1. 项目构成及原理 [Vue](https://cn.vuejs.org/)###* 主流框架见解及差别 * react ...
- 使用bootstrap-table等自动使用ajax地址载入数据的插件的数据设计建议
提出问题: bootstrap-table 可以根据ajax地址load的json数据.这个json数据一般就是数据库中查询的结果,而数据库中存放的数据一般不是用户友好的,比如数据表示一般使用简洁id ...
- 三种简单的html网页自动跳转方法
三种简单的html网页自动跳转方法,可以让你在打开一个html网页时自动跳转到其它的页面. 方法/步骤 <html> <head> <title>正在跳转< ...
- 集合之四:List接口
查阅API,看List的介绍.有序的 collection(也称为序列).此接口的用户可以对列表中每个元素的插入位置进行精确地控制.用户可以根据元素的整数索引(在列表中的位置)访问元素,并搜索列表中的 ...
- redis 学习笔记(一)
redis 基本类型 String 基本操作: GET 获取存储在给定键中的值 SET 设置存储在给定键中的值 DEL 删除存储在给定键中的值 List 基本操作: LPUSH/RPUSH 从左/右推 ...
- [Alpha]Scrum Meeting#3
github 本次会议项目由PM召开,时间为4月3日晚上10点30分 时长15分钟 任务表格 人员 昨日工作 下一步工作 木鬼 撰写团队贡献分配计划(issue#39) 调整&分配工作 SiM ...