码迷,mamicode.com
首页 > 编程语言 > 详细

WinForm软件多语言版本实现

时间:2015-08-13 14:27:17      阅读:231      评论:0      收藏:0      [点我收藏+]

标签:多语言 winform c#

摘要:本文旨在实现对winForm程序的多语言设置,包含自定义控件的多语言设置。


实现步骤

1.添加

using System.Threading;

using System.Globalization;

2.设置winForm 程序Localizable属性为true

技术分享

更改Language属性为要改变的语言,在设计界面对需要更改语言的控件进行更改,解决方案资源管理中会自动生成相应的资源配置文件,*.zh-CN.resx(中文) *.en.resx(英文)。语言代码表见备注。

技术分享

3.设置两个Button,分别为中文,英文

Click事件:

private void 英语ToolStripMenuItem_Click(object sender, EventArgs e)
{	
	Thread.CurrentThread.CurrentUICulture = CultureInfo.GetCultureInfo("en");   //应用资源文件,en为英语,zh-CN为中文
	ApplayResource();          //ApplayResource()中执行资源应用
}


private void ApplayResource()             //应用资源文件
{
	System.ComponentModel.ComponentResourceManager res = new ComponentResourceManager(typeof(Form1));    //获取Form1 的资源管理器
	foreach (Control ctl in Controls)			//循环遍历控件Controlsd对
	{
		res.ApplyResources(ctl, ctl.Name);    //应用ctl的ctl.Name资源配置文件;
}
	foreach (ToolStripMenuItem item in this.menuStrip1.Items)
	{
		res.ApplyResources(item, item.Name);
		foreach (ToolStripMenuItem subitem in item.DropDownItems)
		{
			res.ApplyResources(subitem,subitem.Name);
		}
	}


//由于res中不包含userControl1中资源需要重新引用资源文件
//对每个新的窗口都需重新配置res
System.ComponentModel.ComponentResourceManager res1 = new ComponentResourceManager(typeof(userControl1));    //获取userControl1的资源管理器

	foreach (Control item in userControl12.Controls)     //对自己创建的空间进行遍历
	{		
		res1.ApplyResources(item, item.Name);
	}

}


Foreach对控件进行遍历,遍历后应用res.ApplayResource(item,item.Name);item控件的item.Name 属性进行应用资源文件。

 


备注信息:

语言代码表网址:http://www.lingoes.cn/zh/translator/langcode.htm


版权声明:本文为博主原创文章,未经博主允许不得转载。

WinForm软件多语言版本实现

标签:多语言 winform c#

原文地址:http://blog.csdn.net/fanrong1985/article/details/47611207

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!