zoukankan      html  css  js  c++  java
  • 用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();
            }
            /// 
            /// 应用资源
            /// ApplyResources 的第一个参数为要设置的控件
            ///                  第二个参数为在资源文件中的ID,默认为控件的名称
            /// 
            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

  • 相关阅读:
    UVA
    UVA
    模板——扩展欧几里得算法(求ax+by=gcd的解)
    UVA
    模板——2.2 素数筛选和合数分解
    模板——素数筛选
    Educational Codeforces Round 46 (Rated for Div. 2)
    Educational Codeforces Round 46 (Rated for Div. 2) E. We Need More Bosses
    Educational Codeforces Round 46 (Rated for Div. 2) D. Yet Another Problem On a Subsequence
    Educational Codeforces Round 46 (Rated for Div. 2) C. Covered Points Count
  • 原文地址:https://www.cnblogs.com/guojingmail2009/p/4949162.html
Copyright © 2011-2022 走看看