news 2026/5/15 9:15:17

C# WinForms 用资源文件做多语言 + 运行时切换语言 的标准做法

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
C# WinForms 用资源文件做多语言 + 运行时切换语言 的标准做法

开发工具:Visual Stadio
文档最后附有该示例源码下载。

1、窗体文本切换
当新建一个Form或一个UserControl时,将自动生成一个.resx文件,该文件保存默认语言时的文本。

1.1、将Localizable设置为true,启用本地化支持。

1.2、新建一个繁体中文资源文件,添加——>新建项——>找到资源文件,起名为Form1.zh-TW.resx。(语言资源文件的命名规则是:窗体名.语言名.resx)
常用的语言名有:zh-CN(简体中文),zh-TW(台湾繁体),zh-US(美式英文)

如果VS编译不通过,可以拷贝默认.resx文件,再重命名为对应语言的名称格式(如:xxx.zh-CN.resx),最后添加现有项文件,并把它拖放到与默认.resx文件同级位置。

1.3、从工具箱中找到按钮控件,拖放到Form1窗体去新建Button。双击其中一个.resx文件,为它配置繁体中文文本。注:如果开发工具的语言是简体中文,它的默认值就是简体中文。

1.4、选中Form1窗体,切换Language为zh-TW,查看按钮文件变化。

2、使用代码实现语言切换功能
2.1、首先,切换为Default语言。从工具箱中找到菜单控件,拖放到Form1窗体去新建MenuStrip控件。

2.2、下拉项命名为Language,分别为它添加Default与繁体中文语言。

2.3、添加语言切换帮助类,用于运行时切换语言。WinForms 的资源加载看的是 CurrentUICulture(UI 语言)。

2.4、重新对窗体执行资源应用(ApplyResources)以刷新控件文本。刷新当前窗体的关键是递归 ApplyResources

2.5、点击菜单切换语言。这时,可以看到button文本可以实时切换默认语言与繁体中文。其他控件也是同样的道理,只需要添加对应的资源数据。

3、记住当前语言,并在启动时应用。
3.1、在项目下的设置文件中添加UiCulture数据,当前值可以先留空白。

3.2、在切换语言时,保存当前值。

3.3、将所有已打开的窗体切换语言。(顺便将语言切换行为改成一个方法。)

3.4、在 Program.cs 里 Application.Run() 之前设置上次保存的语言。

3.5、这时,即可实时切换语言,又可以在启动软件时使用上次保存的语言。

4、业务字符串的本地化
4.1、新建繁体中文全局资源文件Resources.zh-TW.resx

4.2、添加需要的字符串语言数据。

4.3、在点击按钮时,根据不同的语言显示对应的文本。

繁体中文语言提示。

默认语言提示。

5、动态生成的控件支持多语言
思路:给动态控件绑定 Tag 作为资源 Key,切语言时统一刷新。当然,如果Tag属性另有他用,你也可以使用业务字符串的本地化。

5.1、在窗体中添加FlowLayoutPanel与button。

5.2、给动态控件绑定 Tag 作为资源 Key
通过资源Key获取对应的语言值。

5.3、在资源文件添加对应的Tag语言数据。

5.4、分别在繁体中文与英文语言时添加按钮。

该示例源码下载:
链接: https://pan.baidu.com/s/1sE7KIsi11R444LGGZyAhKw
提取码: ye8w
¥9.99

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/5/15 9:14:30

终极AMD Ryzen处理器调试指南:掌握SDT工具解锁硬件潜能

终极AMD Ryzen处理器调试指南:掌握SDT工具解锁硬件潜能 【免费下载链接】SMUDebugTool A dedicated tool to help write/read various parameters of Ryzen-based systems, such as manual overclock, SMU, PCI, CPUID, MSR and Power Table. 项目地址: https://g…

作者头像 李华
网站建设 2026/5/15 9:14:01

【ABAP】对SAP内存与ABAP内存详解

前言 在ABAP开发过程中,我们经常会遇到不同程序、不同会话间的数据传递需求,而SAP内存和ABAP内存是最常用的两种内存方式。很多朋友容易混淆二者的使用场景和区别,今天就结合实操示例,详细拆解这两种内存的本质、用法及注意事项&a…

作者头像 李华
网站建设 2026/5/15 9:13:11

基于AI的Google Slides插件开发:从原理到实战部署

1. 项目概述:一个让PPT制作“开口说话”的AI插件 如果你和我一样,经常需要制作演示文稿,那你一定对那种“找模板、填文字、调格式”的重复劳动深恶痛绝。更头疼的是,当面对一个全新的、不熟悉的主题时,如何快速构建一…

作者头像 李华
网站建设 2026/5/15 9:12:58

AI智能体安全沙箱实战:基于最小权限原则的隔离与监控方案

1. 项目概述:为AI智能体打造一个安全的“家”最近在折腾AI智能体(Agent)的开发,一个绕不开的痛点就是如何安全、可靠地管理它们的运行环境。无论是做自动化工作流、数据分析机器人,还是更复杂的自主决策系统&#xff0…

作者头像 李华
网站建设 2026/5/15 9:04:39

开源ChatGPT前端部署指南:从零搭建私有AI对话界面

1. 项目概述:一个开源社区的“ChatGPT”镜像站最近在GitHub上闲逛,发现了一个挺有意思的项目,叫“zerobyw/ChatGPT”。乍一看标题,你可能会以为这是OpenAI官方泄露的代码,或者某个大神复刻的模型。但点进去仔细研究后&…

作者头像 李华