C#多语言切换

2023-11-14

第一步建立工程

第二步:拖拽控件

第三步选择窗体

第四步修改窗体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日

 

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

C#多语言切换 的相关文章

随机推荐

  • 魅蓝note6救砖_魅蓝NOte6获取完美root 框架教程步骤+救砖完整线刷固件

    魅蓝note6真正可以root的版本是Flyme6 1 4 6A 而官网已经下架了这个版本的ROM包 需要下载的朋友可私信发我 1 通过官方REC 版本降级为Flyme6 1 4 6A 然后打开魅族手机自带的root 打开它的原因 便是给第
  • 【统计学】分类数据分析 相关分析 方差分析 比较 研究思路 spss

    分类数据分析是针对类别型变量之间是否有影响进行的分析 而相关分析是类别型变量之间有影响的前提下 研究变量间相关的程度 以及正相关还是负相关 方差分析稍有不同 是研究分类型变量对数值型变量的影响 而不是类别型变量之间的关系 上统计学课的时候这
  • ubuntu pycharm卡住的解决办法

    pycharm界面卡住 无法关闭也无法执行任何操作 解决办法 1 终端输入 ps ef命令 获得所有进程信息 2 找到pycharm进程对应的PID号 第二列即为PID 3 输入kill s 9 PID号 如kill s 9 2136将会结
  • go实战学习——context包学习理解笔记

    context包学习理解笔记 context包 context接口 context实例 valueCtx 控制 cancelCtx 核心cancel方法 timerCtx context包使用注意事项 学习golang时 在看一下项目的源码
  • vsce报错The Personal Access Token verification has failed.,vsce login登录时同报此错的解决办法

    本篇文章主要讲解vscode插件开发提交插件版本时出现的token报错问题的解决办法 日期 2023年6月15日 作者 任聪聪 报错现象 1 vsce login 用户id报错如下 具体报错内容 The Personal Access To
  • mysql 与sybase小知识

    MySQL与Sybase不同点 MySQL没有if exists Sybase有if exists MySQL中无select into语句 sybase中可用select into MySQL查询其他表数据并插入到新表 create ta
  • 11.Vuex学习

    Vuex学习 一 Vuex是什么 为什么要用它 1 vue中各个组件之间传值 2 Vuex 3 vuex使用步骤 二 Vuex异步加载 一 Vuex是什么 为什么要用它 1 vue中各个组件之间传值 1 父子组件 父组件 gt 子组件 通过
  • # 经典目标检测识别方法概述RCNN/FAST/FASTER RCNN/MASK RCNN/SSD/DSSD/YOLO V1/YOLO V2等

    经典目标检测识别方法概述 陈子逸 经典目标检测识别方法概述 由于水硕期间自学了一些目标探测的方法 这里做一个概述 肯定有不完美的地方 还请指正一起进步 综述 1 分别简单描述一下RCNN系列 在我看来 RCNN 是一个benchmark 首
  • 基于element-ui Table 进行二次封装

    基于 ElTable 组件进行二次封装 创建 BaseTable vue 文件
  • C++ 继承(1): 继承方式(public, protected, private)

    C 继承 1 继承方式 public protected private 继承中的特殊关系 隐藏 is a 在水一方xym的博客 CSDN博客 C 远征之继承篇 视频教程 笔记 方便自己查阅和复习 温故而知新 目录 1 c 继承简介 代码示
  • 2021年蓝桥杯赛题【Python】

    填空 1 卡片 小蓝有很多数字卡片 每张卡片上都是数字 0 到 9 小蓝准备用这些卡片来拼一些数 他想从 1 开始拼出正整数 每拼一个 就保存起来 卡片就不能用来拼其它数了 小蓝想知道自己能从 1 拼到多少 例如 当小蓝有 30 张卡片 其
  • 中国历代王朝大排名

    中国自秦以降 一共出过九个大王朝 它们是 秦 汉 晋 隋 唐 宋 元 明 清 另外 还出过五十几个小王朝 它们是 三国时的魏 蜀 吴 共三个 转自铁血社区 http bbs tiexue net 十六国时的东晋 前赵 北凉 夏 后赵 鲜卑
  • JVM参数介绍

    一 JVM参数分类 根据jvm参数开头可以区分参数类型 共三类 X XX 标准参数 所有的JVM实现都必须实现这些参数的功能 而且向后兼容 例子 verbose class verbose gc verbose jni 非标准参数 X 默认
  • python输出百分数

    方式1 直接使用参数格式化 2 2 之作用 显示小数点后2位 例如 1 显示两位小数 gt gt gt print percent 2 format 40 50 percent 83 35 2 不显示小数 0 即 将2改为0 gt gt g
  • 教你如何使用接口根据关键词取视频列表

    请求参数 请求参数 q 耳机 page 1 sort 参数说明 q 关键词 page 页数 sort 排序 sort new 最新发布 sort credit 最多点赞 sort bid 综合排序 API接口工具 page 1 real t
  • Linux的常用命令

    Linux的常用命令 一 系统信息 1 who或w 查看所有终端 2 uname m 显示及其的处理器架构 3 uname r 显示正在使用内核版本 4 date 显示系统日期 5 cal 2019 显示2019年的日历表 6 clear
  • Windows10安装ubuntu18.04双系统教程

    写在前面 本教程为windows10安装ubuntu18 04 64位 双系统教程 是我多次安装双系统的经验总结 安装方法同样适用于ubuntu16 04 64位 为了直观和易于理解 我会尽量图文并茂 并用最通俗的语言完成这篇教程 虽然安装
  • 【最优PID 整定】PID性能指标(ISE,IAE,ITSE和ITAE)优化、稳定性裕量(Matlab代码实现)

    欢迎来到本博客 博主优势 博客内容尽量做到思维缜密 逻辑清晰 为了方便读者 座右铭 行百里者 半于九十 本文目录如下 目录 1 概述 2 运行结果 3 参考文献 4 Matlab代码实现 1 概述 PID控制器是工业系统中使用最广泛的控制器
  • 仔细想了下模块划分,其实也不简单-量化

    我们今天聊一聊研发的依赖问题 一个App就是一堆git仓库 一堆逻辑的组合 就构成了完整的业务逻辑 衡量模块划分的标准其实就是 沟通量 换个词语 职责划分 代码边界 常用的划分是功能划分 通过引入各种仓库 给我们的研发带来了边界 api j
  • C#多语言切换

    第一步建立工程 第二步 拖拽控件 第三步选择窗体 第四步修改窗体localizable 属性为 true 如下图 第五步 修改language 属性 如下图 第六步 修改各个控件的字符名称 会出现下面的资源文件 注意之前是没有资源文件的 第