用c#创建支持多语言的WinForm应用程序

实现多语言的方法可能有使用资源文件,或者配置xml两种方法吧。
没时间研究过多,学习了一下使用资源文件的方法,成功了。


在.net2.0 中,m$ 为我们提供了一种简单方便的方法, 使用资源文件

1.新建一个 Winform 应用程序, 新建一 Form ,名为 Form1,添加一个菜单一个按钮。如图

2. 设置 Form1 的 Localizable 属性为 true, 设置该属性后,.net 将根据不同的语言,为应用程序生成不同的资源文件
3.设置各个控件的文本(系统默认语言下)
4.更改 Form1 的 Language 属性为想要支持的另一种语言,此例中我们选用 English
5.重新设置各个控件的文本
 注:此时.net 将为 Form1 生成另一个资源文件,在本例中名为 Form1.en.resx
当你需要添加新的控件时,需要切换到default语言。
6. 如果有其它的语言要设置,请重复第4,第5步
7.编写代码 (需要消息框多语言支持的话,就用form做消息框吧。同时也做成多语言支持。)

大气象
using  System;
using  System.Collections.Generic;
using  System.ComponentModel;
using  System.Data;
using  System.Drawing;
using  System.Text;
using  System.Windows.Forms;

using  System.Threading;
using  System.Globalization;

namespace  GlobalResource
{
    
public   partial   class  Form1 : Form
    {
        
public  Form1()
        {
            InitializeComponent();
        }

        
private   void  button1_Click( object  sender, EventArgs e)
        {
            Msg msg 
=   new  Msg();
            msg.ShowDialog();
        }

        
private   void  退出ToolStripMenuItem_Click( object  sender, EventArgs e)
        {
            Application.Exit();
        }

        
private   void  中文ToolStripMenuItem_Click( object  sender, EventArgs e)
        {
            
// 更改当前线程的 CultureInfo
            
// zh-CN 为中文,更多的关于 Culture 的字符串请查 MSDN
            Thread.CurrentThread.CurrentUICulture  =  CultureInfo.GetCultureInfo( " zh-CN " );
            
// 对当前窗体应用更改后的资源
            ApplyResource();
        }

        
private   void  英文ToolStripMenuItem_Click( object  sender, EventArgs e)
        {
            
// 更改当前线程的 CultureInfo
            
// en 为英文,更多的关于 Culture 的字符串请查 MSDN
            Thread.CurrentThread.CurrentUICulture  =  CultureInfo.GetCultureInfo( " en " );
            
// 对当前窗体应用更改后的资源
            ApplyResource();
        }
        
///   <summary>
        
///  应用资源
        
///  ApplyResources 的第一个参数为要设置的控件
        
///                   第二个参数为在资源文件中的ID,默认为控件的名称
        
///   </summary>
         private   void  ApplyResource()
        {
            System.ComponentModel.ComponentResourceManager res 
=   new  ComponentResourceManager( typeof (Form1));
            
foreach  (Control ctl  in  Controls)
            {
                res.ApplyResources(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);
                }
            }

            
// Caption
            res.ApplyResources( this " $this " );
        }
    }
}

 判断操作系统语言的方法:

 

大气象
private   void  Form1_Load( object  sender, EventArgs e)
{
    
// 不需要判断操作系统的语言,使用资源文件会自动选择。
    
// if (System.Globalization.CultureInfo.InstalledUICulture.Name == "zh-CN")
    
// {
    
//     Thread.CurrentThread.CurrentUICulture = CultureInfo.GetCultureInfo("zh-CN");
    
//      // 对当前窗体应用更改后的资源
    
//     ApplyResource();
    
// }
    
// else
    
// {
    
//     Thread.CurrentThread.CurrentUICulture = CultureInfo.GetCultureInfo("en");
    
//      // 对当前窗体应用更改后的资源
    
//     ApplyResource();
    
// }
}

 

源码下载:http://files.cnblogs.com/greatverve/GlobalResource.rar

参考:
http://www.cnblogs.com/michaelhuwei/archive/2007/06/05/771954.aspx
http://www.cnblogs.com/robertzml/archive/2009/08/20/1550445.html
http://topic.csdn.net/u/20081030/00/71d2a66b-19bc-4b28-9f18-2dd038e80e3c.html
http://topic.csdn.net/u/20081020/16/4440219e-b4a8-41ee-85a3-58ac45870f72.html?seed=1079612622

 

转自:http://www.cnblogs.com/greatverve/archive/2010/10/20/csharp-Multi-Language.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值