C#多语言切换

news2024/9/22 17:24:18

第一步建立工程

第二步:拖拽控件

第三步选择窗体

第四步修改窗体localizable 属性为 true  如下图

第五步 修改language 属性 如下图

 第六步:修改各个控件的字符名称

会出现下面的资源文件(注意之前是没有资源文件的)

 第七步:修改语言为英文

修改各个控件的文字生成新的资源文件(新增加的,可以对比上面的图)

 实现效果:

启动后:

选择英文

选择中文

  

 实现代码:

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Globalization;
using System.Linq;
using System.Text;
using System.Threading;
using System.Threading.Tasks;
using System.Windows.Forms;

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

        //参考讲解
        //https://www.bilibili.com/video/BV1DM4y1n7Ds/?spm_id_from=333.1007.top_right_bar_window_custom_collection.content.click

        private void Form1_Load(object sender, EventArgs e)
        {
            
        }

        ComponentResourceManager resource = new ComponentResourceManager(typeof(Form1));
        private void button2_Click(object sender, EventArgs e)
        {
            Thread.CurrentThread.CurrentUICulture = CultureInfo.GetCultureInfo("zh-CN");
            ApplyResource();
        }

        private void button3_Click(object sender, EventArgs e)
        {
            Thread.CurrentThread.CurrentUICulture = CultureInfo.GetCultureInfo("en-US");
            ApplyResource();
        }
        void ApplyResource() 
        {
            foreach(Control item in this.Controls)
            {
                if(item != null)
                {
                    resource.ApplyResources(item,item.Name);
                }
            }
        }
    }
}

题记:

主要是如何生成最初的资源文件:

以及如何应用资源文件

特此记录

anlog

2023年6月20日

动态信息需要代码单独调用显示

void ApplyResource() 
        {
            foreach(Control item in this.Controls)
            {
                if(item != null)
                {
                    resource.ApplyResources(item,item.Name);
                }
            }
            button4.Text = bt4_ZhuangT? resource.GetString("BT4_Open"):resource.GetString("BT4_Close");
            this.Text = resource.GetString("BT4_Open") + " -- " + resource.GetString("BT4_Close");
        }
        bool bt4_ZhuangT = true;

        private void button4_Click(object sender, EventArgs e)
        {
            //bt4_ZhuangT = !bt4_ZhuangT;
            if( bt4_ZhuangT) { bt4_ZhuangT = false; } else { bt4_ZhuangT = true; } 

            ApplyResource();
        }

关键语句

button4.Text = bt4_ZhuangT? resource.GetString("BT4_Open"):resource.GetString("BT4_Close");

需要资源文件内配套字符串

 另外英文也需要单独定义

 这三处配合使用

特此记录

anlog

2023年6月20日

 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/690281.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Druid 数据库密码加密-代码详解

这次来详细说下 Druid 数据库密码加密-代码详解 第一种方法使用原生加解密 首先需要使用druid的密码加密功能加密密码 > 找到druid jar文件地址 执行 加密命令 java -cp druid-1.2.10.jar com.alibaba.druid.filter.config.ConfigTools you_password 会得到以下信息 priva…

回顾 | Learn From Microsoft Build Ⅱ:Data

点击蓝字 关注我们 编辑:Alan Wang 排版:Rani Sun 微软 Reactor 为帮助广开发者,技术爱好者,更好的学习 .NET Core, C#, Python,数据科学,机器学习,AI,区块链, IoT 等技术&#xff0…

动态隐藏显示底部Tab栏

方式1 路由源信息 方式2 css样式 css功能:让盒子盖住整个页面 给div.city添加.page-cover的类(让div.city盖住页面的tabbar) /* 让盒子盖住整个页面 */ .page-cover {position: relative;z-index: 2;height: 100vh;background-color: #fff;…

计算机组成原理(期末或考研备考)-计算机系统概述重点

1.1计算机发展历程 1946第一台电子数字计算机(ENIAC)第一代计算机(1946-1957)-- 电子管;体积大,容量小,成本高,速度慢。第二代计算机(1958-1964)-- 晶体管;运算速度提升…

java之路—— SpringMVC的基本详解

文章目录 前言一、 核心的组件二、基本实现流程三、MVC的基本配置使用 前言 Spring MVC是一个用于构建Web应用程序的基于MVC(Model-View-Controller)设计模式的框架。 它是Spring Framework的一部分,提供了一种灵活、可扩展且功能强大的方式…

Android APT 系列 (三):APT 技术探究

APT 介绍 什么是 APT ? APT 全称 Annotation Processing Tool,翻译过来即注解处理器。引用官方一段对 APT 的介绍:APT 是一种处理注释的工具, 它对源代码文件进行检测找出其中的注解,并使用注解进行额外的处理。 APT 有什么用?…

基于Java+Swing实现推箱子游戏

基于JavaSwing实现推箱子游戏 一、系统介绍二、功能展示三、其他系统四、获取源码 一、系统介绍 基于JAVA的推箱子游戏系统主要用于实现游戏推箱子功能,提供多种不同难度的关卡。本系统结构如下: (1)初始化模块: 该模块包括屏幕初…

如何用 ChatGPT 和你的卡片笔记对话?开源应用 Quivr 尝试

卡片 我 非常喜欢使用卡片笔记。其优点明显,例如能显著减轻写作压力。在你面对空白屏幕时,写一篇文章的压力可能会很大,而随时三言两语记录卡片笔记则显得更为轻松。由于笔记以卡片形式存在,可以进行大量重组复用,对于…

基于SpringBoot+vue的音乐网站与分享平台设计与实现

博主介绍: 大家好,我是一名在Java圈混迹十余年的程序员,精通Java编程语言,同时也熟练掌握微信小程序、Python和Android等技术,能够为大家提供全方位的技术支持和交流。 我擅长在JavaWeb、SSH、SSM、SpringBoot等框架…

分布式理论和一致性算法详解

1、什么是分布式系统 分布式系统是一个硬件或软件组成分布在不同的网络计算机上,彼此之间仅仅通过消息传递进行通信和协调的系统 2、分布式系统的特征 分布性 分布式系统的多台计算机都会在空间上随意分布的,同时,机器的分布情况也会随时变动…

【详细分析】thinkphp反序列化漏洞

文章目录 配置xdebug反序列化漏洞利用链详细分析poc1(任意文件删除)测试pocpoc2(任意命令执行)poc3(任意命令执行) 补充代码基础函数trait关键字应用案例优先级多trait 配置xdebug php.ini [Xdebug] zend…

聊聊我在店铺开放域做性能优化的体会

我们新推出大淘宝技术年度特刊《长期主义,往往从一些小事开始——工程师成长总结专题》,专题收录多位工程师真诚的心路历程与经验思考,覆盖终端、服务端、数据算法、技术质量等7大技术领域,欢迎一起沟通交流。 本文为此系列第五篇…

nodejs+mysql+vue+elementUI 实现选择资源管理工具

我们在写后台管理系统时会遇到上传视频、音频等内容。如果上传资源地方多的话,每个地方都要加上传的代码,比较麻烦。而且遇到有些图片是已经上传过的,下次遇到了又要重复上传,浪费服务器或cos资源。 这时候可以实现一个资源管理工具,上传图片到资源管理工具里,然后再去选…

35年前,金山WPS上的当终于找补回来,没想到,钉钉也深度参与

我们当年上了微软的当! 近日,雷军在武汉科技大学毕业典礼致辞,登上了热搜。 关于“小米汽车”的话题再次被推上了舆论的风口。这是54岁雷军的最后一搏,距离2024年量产,时间也所剩不多了。 从软件到电商,到…

Flutter控件封装之视频进度条

视频控制器,三方所提供的样式,有时很难满足我们的需求,对于此情况,我们不得不在此基础上自行封装,今天所分享的文章就是一个很简单的控制器封装案例,包含了基本的播放暂停,全屏和退出全屏&#…

在ElementUI中如何通过按钮控制输入框的隐藏与显示

点击此按钮会出现两个输入框 当点击完新增后会出现两个输入框及一个按钮&#xff0c;解决此方案思路比较简单&#xff1a;就是设置一个属性值&#xff0c;用v-if进行绑定&#xff0c;在什么情况下需要显示就需要设置v-if绑定的值等于需要显示的值 <div style"height:7…

Istio 熔断 连接池 故障处理

istio熔断 熔断主要是无感的处理服务异常并保证不会发生级联甚至雪崩的服务异常。在微服务方面体现是对异常的服务情况进行快速失败&#xff0c;它对已经调用失败的服务不再会继续调用&#xff0c;如果仍需要调用此异常服务&#xff0c;它将立刻返回失败。 与此同时&#xff0…

c语言修炼第一章--初识c语言(1.3)

目录 前言&#xff1a; 1.关键字 1.1常见关键字: 1.1.1typedef类型重定义 1.2.static 1.2.1static修饰局部变量 1.2.2static修饰全局变量 1.2.3static修饰函数 …

待办事项工具用哪个?每天都在用的待办工具

随着职场“内卷”程度的加深&#xff0c;越来越多的上班族感到自己每天都会面临各种繁忙的日程安排、琐碎的待办事项&#xff0c;并且工作事项和家庭事项交织在一起&#xff0c;需要各方面都兼顾到&#xff0c;这简直让人恨不得长出三头六臂。在待办的事情比较多时&#xff0c;…

艺考之路,很艰难也很幸福

点击文末“阅读原文”即可参与节目互动 剪辑、音频 / 卷圈 运营 / SandLiu 卷圈 监制 / 姝琦 嘉宾 / 小川同学 产品统筹 / bobo 录音间 / 声湃轩北京站 本期节目是拼娃时代的第三十期&#xff0c;我们请来了拼娃时代的老朋友&#xff0c;小川同学。 拼娃时代的听友们肯定…