C#Winform使用按键和下拉框切换中英文语言状态

在winform中的窗体中直接切换语言

创建新的项目后,在窗体中添加控件
Form1中的控件布局

设置中英文资源

先将Form1窗体中的属性Locallizable设置为True。属性
然后设置form1属性中的Language为中文,设置完成后,将所有控件的属性的Text值写成中文名。在这里插入图片描述
然后设置form1属性中的Language为英文,设置完成后,将所有控件的属性的Text值写成英文名。
在这里插入图片描述
设置完成后,会形成两个资源文件,zh代表中文,en代表英文。在这里插入图片描述
Form1.zh.resx文件里的内容
在这里插入图片描述
Form1.en.resx文件里的内容
在这里插入图片描述
控件中英文资源设置完成后,写代码。

使用按键切换中英文语言代码

//添加命名空间
using System.Threading;
using System.Windows.Forms;

namespace language_change
{
    public partial class Form1 : Form
    {
        public Form1()
        {
            InitializeComponent();
        }
        //组件资源管理器
        ComponentResourceManager resource = new ComponentResourceManager(typeof(Form1));
        private void btn_chinese_Click(object sender, EventArgs e)
        {
            //Thread.CurrentThread.CurrentUICulture = CultureInfo.GetCultureInfo("");
            ApplyResource();
        }

        private void btn_english_Click(object sender, EventArgs e)
        {
            //Thread.CurrentThread.CurrentUICulture = CultureInfo.GetCultureInfo("en");
            ApplyResource();
        }
        //应用到每个控件上
        void ApplyResource()
        {
            foreach (Control item in this.Controls)
            {//针对每个控件,需要传入对象和对象名称
                resource.ApplyResources(item, item.Name);
            }
            button1.Text= a ? resource.GetString("打开状态"): resource.GetString("关闭状态");
        }
        //阀门开启状态
        bool a = false;
        private void button1_Click(object sender, EventArgs e)
        {
            //阀门打开,给他关闭
            if(a)
            {//组件资源管理器
                a = false;
                button1.Text = resource.GetString("关闭状态");
            }
            else
            {
                a = true;
                button1.Text = resource.GetString("打开状态");
            }
        }       

    }
}

上面代码是包括了按键状态切换的,如果只是想要改变控件中英文,可以直接使用下面的代码,忽略按键状态。

namespace language_change
{
    public partial class Form1 : Form
    {
        public Form1()
        {
            InitializeComponent();
        }
        //组件资源管理器
        ComponentResourceManager resource = new ComponentResourceManager(typeof(Form1));
        private void btn_chinese_Click(object sender, EventArgs e)
        {
            //Thread.CurrentThread.CurrentUICulture = CultureInfo.GetCultureInfo("");
            ApplyResource();
        }

        private void btn_english_Click(object sender, EventArgs e)
        {
            //Thread.CurrentThread.CurrentUICulture = CultureInfo.GetCultureInfo("en");
            ApplyResource();
        }
        //应用到每个控件上
        void ApplyResource()
        {
            foreach (Control item in this.Controls)
            {//针对每个控件,需要传入对象和对象名称
                resource.ApplyResources(item, item.Name);
            }           
        }

      
    }
}

使用下拉框切换中英文语言代码

namespace language_change
{
    public partial class Form1 : Form
    {
        public Form1()
        {
            InitializeComponent();
        }
        //组件资源管理器
        ComponentResourceManager resource = new ComponentResourceManager(typeof(Form1));       
        //应用到每个控件上
        void ApplyResource()
        {
            foreach (Control item in this.Controls)
            {//针对每个控件,需要传入对象和对象名称
                resource.ApplyResources(item, item.Name);
            }
            button1.Text= a ? resource.GetString("打开状态"): resource.GetString("关闭状态");
        }

        private void comboBox1_SelectedIndexChanged(object sender, EventArgs e)
        {
            if(cbx_change.SelectedIndex == 0)
            {
                Thread.CurrentThread.CurrentUICulture = CultureInfo.GetCultureInfo("zh");
                ApplyResource();
            }
            else
            {
                Thread.CurrentThread.CurrentUICulture = CultureInfo.GetCultureInfo("en");
                ApplyResource();
            }
        }
       
    }
}

在这里,我的下拉框里面的内容,索引0是中文,索引1是英文。代码里直接使用的索引来判断的。也可以将下拉框内容转换成字符串进行判断。看个人习惯。

 string selectedLanguage = comboBoxLanguage.SelectedItem.ToString();
        if (selectedLanguage == "中文")
        {
            Thread.CurrentThread.CurrentUICulture = CultureInfo.GetCultureInfo("zh");
             ApplyResource();
        }
        else if (selectedLanguage == "English")
        {
             Thread.CurrentThread.CurrentUICulture = CultureInfo.GetCultureInfo("en");
              ApplyResource();
        }

如果哪里有错误可以指出来,大家共同进步。

  • 4
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值