c#软件实现语言版本切换

winForm多语言版本实现

 

摘要:本文旨在实现对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);    //应用ctlctl.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(对每个窗体,其res文件都需要重新引用)

System.ComponentModel.ComponentResourceManager res = new ComponentResourceManager(typeof(userControl12));    //获取userControl12的资源管理器  

foreach (Control item in userControl12.Controls)     //对自己创建的空间进行遍历

{

res.ApplyResources(item, item.Name);

}

 

}

首先用ComponentResourceManager获取窗体的res 在通过遍历进行res.ApplayResources(item,item.property);

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

 

如果在应用后出现排版问题,是由于在应用时没有对新的控件使用System.ComponentModel.ComponentResourceManager res = new ComponentResourceManager(typeof(userControl12));    //获取userControl12的资源管理器  

 

 备注信息:

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

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

阅读更多
想对作者说点什么? 我来说一句

没有更多推荐了,返回首页