C#窗体多语言切换(简繁)
多窗体最好继承一个父窗体,在父窗体Load事件中执行此方法
添加引用 using Microsoft.VisualBasic;
#region 语言切换
/// <summary>
/// 语言切换
/// </summary>
public static void ChangeLanguage(Form f)
{
if (!StaticInfo.ChangeLanguage) return; //设置窗体标题
f.Text = GetLanguage(f.Text); //遍历Form上的所有控件
foreach (Control control in f.Controls)
{
if (control is Panel || control is GroupBox)
{
foreach (Control con in control.Controls)
{
SetLanguage(con);
}
}
else
{
SetLanguage(control);
}
}
} private static void SetLanguage(Control con)
{
//设置按钮
Button btn = con as Button;
if (btn != null)
{
btn.Text = GetLanguage(btn.Text);
} //设置文本标签
Label lb = con as Label;
if (lb != null)
{
lb.Text = GetLanguage(lb.Text);
} //设置复选框
CheckBox cb = con as CheckBox;
if (cb != null)
{
cb.Text = GetLanguage(cb.Text);
} //设置菜单栏
MenuStrip ms = con as MenuStrip;
if (ms != null)
{
foreach (ToolStripMenuItem item in ms.Items)
{
if (StaticInfo.Language.ToUpper() == "CN")
{
item.Text = Strings.StrConv(item.Text, VbStrConv.TraditionalChinese, );
for (int i = ; i < item.DropDownItems.Count; i++)
{
item.DropDownItems[i].Text = GetLanguage(item.DropDownItems[i].Text);
}
}
else
{
item.Text = Strings.StrConv(item.Text, VbStrConv.SimplifiedChinese, );
for (int i = ; i < item.DropDownItems.Count; i++)
{
item.DropDownItems[i].Text = GetLanguage(item.DropDownItems[i].Text);
}
}
}
} //设置工具栏
ToolStrip ts = con as ToolStrip;
if (ts != null)
{
for (int i = ; i < ts.Items.Count; i++)
{
ts.Items[i].Text = GetLanguage(ts.Items[i].Text);
}
} //设置数据表格
DataGridView dgv = con as DataGridView;
if (dgv != null)
{
for (int i = ; i < dgv.Columns.Count; i++)
{
dgv.Columns[i].HeaderText = GetLanguage(dgv.Columns[i].HeaderText);
}
} //设置选项卡
TabControl tc = con as TabControl;
if (tc != null)
{
tc.Text = GetLanguage(tc.Text); for (int i = ; i < tc.TabPages.Count; i++)
{
tc.TabPages[i].Text = GetLanguage(tc.TabPages[i].Text); foreach (Control c in tc.TabPages[i].Controls)
{
SetLanguage(c);
}
}
} //设置ListView
ListView lv = con as ListView;
if (lv != null)
{
for (int i = ; i < lv.Columns.Count; i++)
{
lv.Columns[i].Text = GetLanguage(lv.Columns[i].Text);
}
} //设置分组框
GroupBox gb = con as GroupBox;
if (gb != null)
{
foreach (Control control in gb.Controls)
{
SetLanguage(control);
}
}
} //获取当前语言下的文本
private static string GetLanguage(string text)
{
return Strings.StrConv(text,
StaticInfo.Language.ToUpper() == "CN"
? VbStrConv.SimplifiedChinese
: VbStrConv.TraditionalChinese, );
} #endregion
多语言切换代码
C#窗体多语言切换(简繁)的更多相关文章
- js实现中文简繁切换效果
html代码: <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www ...
- Android app应用多语言切换功能实现
最近在做一个多语言切换的功能,类似于微信的语言切换,搜了下资料基本上都是以下这种: 1. 实现的效果 和微信类似,在设置界面打开切换语言的界面,选择语言后重启 HomeActivity,语言切换完成, ...
- js搞定网页的简繁转换
对网页进行简繁字体转换的方法一般有两种:一是使用<简繁通>这样的专业软件,另外一种是制作两套版本的网页.显然,这两种方法都较为麻烦,而且专业软件一般不能用于免费的空间.笔者在这里给大家提供 ...
- iOS 语言切换、本地化,国际化
什么是本地化处理? 本地化处理就是我们的应用程序有可能发布到世界的很多国家去,因为每个国家应用的语言是不一样的,所以我们要把我们的应用程序的语言要进行本地化处理一下. 本地化处理需要处理那些文件? ( ...
- QT实现多语言切换
功能需求: 网盘客户端要能够实现多国语言的切换,第一版要支持中.英文的切换.在实现过程中感觉QT对多国语言的支持还是很不错的,制作多语言包很方便,切换的逻辑也很简单.下面就来看一下QT中如何制作多语言 ...
- C# winForm资源文件实现多语言切换
这是我目前看到过最简单的多语言切换了 操作步驟 介面上的多語 Step1.將表單的Localizable屬性設為True Step2.切換表單的Language屬性為欲使用的語系 設完後會在分頁標籤上 ...
- HanLP极致简繁转换详细讲解
HanLP极致简繁转换详细讲解 作者: hankcs(大快高级研究员 hanlp项目负责人) 谈起简繁转换,许多人以为是小意思,按字转换就行了.事实上,汉语历史悠久,地域复杂,发展至今在字符级别存在“ ...
- [原创]使用OPENCC库进行简繁转换(C++代码)
最近公司有一款游戏产品,字库存在问题,希望全自动进行简繁同屏自动转换的行为,减少工作量. 所以自己使用了WINDOWS自带的一些转换函数,但发现大量字出现异常,无法转换(测试iconv也发现无法转换) ...
- Winform窗体改变语言类型的方式
Winform改变语言类型比较复杂,需要根据不同语言应用语言资源.而软件在进行语言切换时,需要将当前的UI文化线程引用对应的语言类型.常用的有三种方式,此处使用两种,对比发现其中的优缺点: /// & ...
随机推荐
- java反射 顺序输出类中的方法
java反射可以获取一个类中的所有方法,但是这些方法的输出顺序,并非代码的编写顺序. 我们可以通过自定义一个注解来实现顺序输出类中的方法. 首先,先写一个类,定义增删改查4个方法 public cla ...
- mac系统下给文件夹加密方法
电脑里我们往往会有许多隐私的文件,不希望被别人看到,在过去的Windows电脑里,我们习惯性的会在文件夹中将该文件隐藏,但是这个隐藏是不安全的,遇到稍微会点电脑技术的人就可以给你解开,安全性不高,ma ...
- ELK菜鸟手记 (四) - 利用filebeat和不同端口把不同服务器上的log4j日志传输到同一台ELK服务器
1. 问题描述 我们需要将不同服务器(如Web Server)上的log4j日志传输到同一台ELK服务器,介于公司服务器资源紧张(^_^) 2. 我们需要用到filebeat 什么是filebeat ...
- springboot 获取hibernate 的 SessionFactory
注入bean package cn.xiaojf; import cn.xiaojf.today.data.rdb.repository.RdbCommonRepositoryImpl; import ...
- 关于 IDEA 自动识别问题,jsp页面Controller路径自动识别的问题
idea之所以强大,就是强大的代码提示和联想功能,写起代码来简直不要太爽.但是这几天我发现在我的jsp页面中访问controller路径的时候不会自动提示了,对于这么严谨的我肯定要找出原因啊,哈哈. ...
- [机器学习实践] 针对Breast-Cancer数据集
本篇博客中,我们将对一个UCI数据库中的数据集:Breast-Cancer数据集,应用已有的机器学习方法来实现一个分类器. 本文代码链接 数据集概况 数据集的地址为:link 在该页面中,可以进入Da ...
- Spring Task每次都会调用两次的问题
最近一个Spring Mvc的项目中需要定时执行一个任务,所以使用了spring 自带的Task功能.本地调试的时候一切都正常,可是部署到服务器上后,每次任务都会被调用两次.在网上搜索了相关的问题,排 ...
- 实验:Oracle数据泵导出导入之序列问题
今天同事提出了一个问题: 使用数据泵expdp导出1个schema,有个表主键是触发器自增的id,导入测试库测试时,发现表里的数据比自增序列的值要大.导致插入数据报错. 最终结论是: 由于数据库先进行 ...
- linux下mysql重置密码
如果忘记mysql的root密码可以采取下面的步骤重新设置 1.kill掉所有mysql的进程 2.使用--skip-grant-tables的参数启动mysql shell> mysqld_s ...
- android登录实现,存储数据到/data/data/包名/info.txt
1.一个简单登录界面布局代码如下: @1采用线性布局加相对布局方式 @2线性布局采用垂直排列 <?xml version="1.0" encoding="utf-8 ...