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文化线程引用对应的语言类型.常用的有三种方式,此处使用两种,对比发现其中的优缺点: /// & ...
随机推荐
- SpringMVC——DispatcherServlet的IoC容器(Web应用的IoC容器的子容器)创建过程
在上一篇<Spring--Web应用中的IoC容器创建(WebApplicationContext根应用上下文的创建过程)>中说到了Web应用中的IoC容器创建过程.这一篇主要讲Sprin ...
- xml注释快捷键
eclipse中编辑Java或C/C++文件时,注释的快捷键均为 "CTRL + / ",编辑xml文件时,该快捷键无效. eclipse XML 注释:CTRL + SHIFT ...
- File 常用方法
1.判断当前文件是否封装的文件夹目录 //返回true--是,false--不是 File file =new File("C:\\Users\\mac\\Desktop\\复习.txt&q ...
- hadoop 2.7.3 集群安装
三台虚拟机,centos6.5 127.0.0.1 localhost localhost.localdomain localhost4 localhost4.localdomain4 :: loca ...
- Redis大幅性能提升之Batch批量读写
Redis大幅性能提升之Batch批量读写 提示:本文针对的是StackExchange.Redis 一.问题呈现 前段时间在开发的时候,遇到了redis批量读的问题,由于在StackExchange ...
- Python-快速排序
算法思想:快速排序运用了分而治之的思想,即在所选数组中选择一个基准(任选一个都可以),以改基准为基础,将小于该基准的元素都移动基准的左边,大于该基准的数据都移动到右边,然后对左右两边进行递归处理.同样 ...
- GPU编程--Shared Memory(4)
GPU的内存按照所属对象大致分为三类:线程独有的.block共享的.全局共享的.细分的话,包含global, local, shared, constant, and texture memoey, ...
- nodeJS实现简单网页爬虫功能
前面的话 本文将使用nodeJS实现一个简单的网页爬虫功能 网页源码 使用http.get()方法获取网页源码,以hao123网站的头条页面为例 http://tuijian.hao123.com/h ...
- Visual Studio Code 使用心得
Visual Studio Code 使用心得 最好用的跨平台编辑器,没有之一! 修改编辑器的显示语言 起因:vsCode又升级了(1.13.0),重启之后发现熟悉的中文菜单没有了,而且设置文件 se ...
- 分清css的em和rem
在css中单位长度用的最多的是px.em.rem,这三个的区别是: px是固定的像素,一旦设置了就无法因为适应页面大小而改变. em和rem相对于px更具有灵活性,他们是相对长度单位,意思是长度不是定 ...