C# 界面控件中英切換

編程軟件:VS 2015

需求:界面有兩個按鈕,點擊可以將界面上所有控件進行不同語言的切換。

一共兩種方案,個人認為第二種方案使用范圍更廣(這里以中英文切換為例)。

方案一:如圖所示,建立兩個資源文件

將所需控件的中英文分別填入對應的資源文件中,如下圖所示:

代碼如下:

        public void ApplyResource(Control control){switch (Thread.CurrentThread.CurrentCulture.Name){case "en":crm = new ComponentResourceManager(typeof(Resource.Resource_en));break;case "zh":crm = new ComponentResourceManager(typeof(Resource.Resource_zh));break;default:crm = new ComponentResourceManager(typeof(Resource.Resource_zh));break;}applyControl(control.GetType().Name, control);//調用}//遞歸應用到控件private void applyControl(string topName, Control control){foreach (Control ctl in control.Controls){crm.ApplyResources(ctl, topName + "." + ctl.Name, Thread.CurrentThread.CurrentCulture);if (ctl.HasChildren){applyControl(topName, ctl);}}}

創建兩個按鈕,分別是中文和英文,將方法引用就可以了。

        private void 中文ToolStripMenuItem_Click(object sender, EventArgs e){中文按鈕是否觸發 = true;英文按鈕是否觸發 = false;Thread.CurrentThread.CurrentCulture = new CultureInfo("zh");//中文ApplyResource(注冊界面對象);//傳入當前的界面}private void 英文ToolStripMenuItem_Click(object sender, EventArgs e){英文按鈕是否觸發 = true;中文按鈕是否觸發 = false;Thread.CurrentThread.CurrentCulture = new CultureInfo("en");//英文}

該方法的缺點在于:界面布局不能自適應,如果英文名和中文名長度不一致就會導致布局發生變化,控件相互遮擋的情況。

?方案二:如圖所示,將界面的Language改為英語

這樣的操作就有有兩個注冊界面,一個中文的,一個英文的,可以各自調整各自的布局。切換不同的語言,顯示不同的界面(界面上的控件翻譯自己來)

方案一和二完全不摻和,方案二不需要建立資源文件!

代碼(可以在界面加載的時候從新定義界面大小):

這個代碼適用于控件嵌套控件

        public void 英文(){this.Text = "Registration interface";this.Size = new Size(1001, 669);Thread.CurrentThread.CurrentUICulture = new CultureInfo("en"); //英文是en遍歷界面控件(this);}public void 中文(){this.Text = "注冊界面";this.Size = new Size(1001, 669);Thread.CurrentThread.CurrentUICulture = new CultureInfo("zh"); //英文是en遍歷界面控件(this);}private void 遍歷界面控件(Control fatherControl){//結果:能獲取到絕大多數控件//問題:Timer、ContextMenuStrip等控件獲取不到ComponentResourceManager resources = new ComponentResourceManager(typeof(注冊界面));Control.ControlCollection sonControls = fatherControl.Controls;foreach (Control control in sonControls){if (control.Controls != null){遍歷界面控件(control);resources.ApplyResources(control, control.Name);}}}

如果各個控件之間不存在嵌套關系,可以用如下代碼:

        public void 英文(){this.Text = "Input settings";this.Size = new Size(444, 340);Thread.CurrentThread.CurrentUICulture = new CultureInfo("en"); //英文是enComponentResourceManager resources = new ComponentResourceManager(typeof(注冊界面));foreach (Control ct in this.Controls)//循環當前界面所有的控件(但是遍歷不到控件中包含控件的控件){resources.ApplyResources(ct, ct.Name);if (ct.HasChildren){resources.ApplyResources(ct, ct.Name);}}}public void 中文(){this.Text = "輸入設置";this.Size = new Size(297, 343);Thread.CurrentThread.CurrentUICulture = new CultureInfo("zh"); //英文是enComponentResourceManager resources = new ComponentResourceManager(typeof(注冊界面));foreach (Control ct in this.Controls)//循環當前界面所有的控件{resources.ApplyResources(ct, ct.Name);if (ct.HasChildren){resources.ApplyResources(ct, ct.Name);}}}

創建兩個按鈕,分別是中文和英文,將方法引用就可以了。

        private void zhToolStripMenuItem_Click(object sender, EventArgs e){中文按鈕是否觸發 = true;英文按鈕是否觸發 = false;注冊界面對象.中文();}private void enToolStripMenuItem_Click(object sender, EventArgs e){英文按鈕是否觸發 = true;中文按鈕是否觸發 = false;注冊界面對象.英文();}

?

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/web/24572.shtml
繁體地址,請注明出處:http://hk.pswp.cn/web/24572.shtml
英文地址,請注明出處:http://en.pswp.cn/web/24572.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

海思SS928(SD3403)部署YOLOv5-YOLOv7步驟詳解

1. YOLO模型資料 本文檔內容以yolov5-7.0工程、yolov5s模型為例。 a. 模型結構 詳細的模型結構可以利用netron工具打開.pt或.onnx模型查看。 b. 模型參數即驗證結果 其中,YOLOv5n、YOLOv5s、YOLOv5m、YOLOv5l、YOLOv5x為五種類型的預訓練模型,其包含的檢測類別相…

利用Pandas進行數據清洗與過濾:Python實戰指南

利用Pandas進行數據清洗與過濾:Python實戰指南 作為一個Python愛好者和數據分析從業者,我一直在探索如何利用Python來更高效地處理和分析數據。Python語言以其簡單易學、功能強大的特點,成為了數據分析領域的寵兒。本文將分享一些實用的Pyth…

2024 cicsn ezbuf

文章目錄 參考protobuf逆向學習復原結構思路exp 參考 https://www.y4ng.cn/posts/pwn/protobuf/#ciscn-2024-ezbuf protobuf 當時壓根不知道用了protobuf這個玩意,提取工具也沒提取出來,還是做題做太少了,很多關鍵性的結構都沒看出來是pro…

android 異屏同顯---學習筆記

實現 Android 異屏同顯(多個屏幕顯示同樣的畫面)可以通過多種方法來完成,具體實現方式會根據你的需求和設備的支持情況有所不同。以下是幾種常見的方法: 方法 1:使用 Cast SDK 如果你想要將內容投屏到智能電視或其他支持 Cast 的設備上,可以使用 Google Cast SDK。 主…

Unity 集成 FMOD 音頻管理插件 2.02

Unity 集成 FMOD 音頻管理插件 2.02 3. 集成教程:3.1 設置Unity項目3.2 設置FMOD項目3.3 設置 FMOD for Unity3.4 添加聲音:卡丁車引擎3.5 添加聲音:氛圍3.6 添加聲音:音樂3.7 刪除現有音頻3.8 下一步 10. 腳本 API 參考10.1 基礎…

Java鎖的四種狀態(無鎖、偏向級鎖、輕量級鎖、重量級鎖)

介紹 首先,我們需要明確一點:偏向級鎖、輕量級鎖、重量級鎖只針對synchronized 鎖的狀態總共有四種,級別由低到高依次為:無鎖、偏向鎖、輕量級鎖、重量級鎖。 這四種鎖狀態分別代表什么,為什么會有鎖升級&#xff…

在UI界面中實現3d人物展示

簡要原理(設置雙攝像機): 為需要展示的3D人物單獨設置一個攝像機(只設置為渲染人物層級),主要攝像機的方向與人物方向一致,但攝像機需要需要旋轉180,設置的角度自行進行微調創建一個Render Texture類型的組件用于存儲攝像機渲染的內容UI上設置需要展示的圖片區域,圖片…

遍歷目錄

自學python如何成為大佬(目錄):https://blog.csdn.net/weixin_67859959/article/details/139049996?spm1001.2014.3001.5501 遍歷在漢語中的意思是全部走遍,到處周游。在Python中,遍歷是將指定的目錄下的全部目錄(包括子目錄)及…

聰明人社交的基本順序:千萬別搞反了,越早明白越好

聰明人社交的基本順序:千萬別搞反了,越早明白越好 國學文化 德魯克博雅管理 2024-03-27 17:00 作者:方小格 來源:國學文化(gxwh001) 導語 比一個好的圈子更重要的,是自己優質的能力。 唐詩宋…

【重學C語言】十九、SDL2 圖形化編程的使用

【重學C語言】十九、SDL2 圖形化編程的使用 SDL2 的第一個程序渲染器紋理渲染1. 紋理的概念2. 加載紋理3. 渲染紋理4. 紋理設置和查詢5. 紋理渲染流程6. 注意事項SDL2_imageSDL2 的第一個程序 #define SDL_MAIN_HANDLED #include <SDL.h>int main(int argc, char* argv[…

AH股高開低走,創業板跌超2%,寧德時代下挫6%,微盤股指數反彈超5%

創業板跌2%&#xff0c;權重股寧德時代跌近6%&#xff1b;地產、光刻機概念股逆勢大漲&#xff1b;券商股午后集體下跌&#xff0c;天風證券一度跌停。微盤股指數經歷連跌后早盤反彈超5%。 內容提要 周五&#xff0c;A股高開后回落&#xff0c;午盤震蕩回升。截至收盤&#x…

python-Bert(谷歌非官方產品)模型基礎筆記0.1.096

python-bert模型基礎筆記0.1.015 TODOLIST官網中的微調樣例代碼Bert模型的微調限制Bert的適合的場景Bert多語言和中文模型Bert模型兩大類官方建議模型Bert模型中名字的含義Bert模型包含的文件Bert系列模型參數介紹微調與遷移學習區別Bert微調的方式Pre-training和Fine-tuning區…

Python可視化 | 使用matplotlib繪制面積圖示例

面積圖是數據可視化中的一個有效工具&#xff0c;用于說明時間上的關系和趨勢。它們提供了一種全面的、視覺上迷人的方法&#xff0c;通過熟練地將折線圖的可讀性與填充區域的吸引力相結合來呈現數值數據。 在本文中&#xff0c;我們將學習更多關于在Python中創建面積折線圖的…

【python】python指南(二):命令行參數解析器ArgumentParser

一、引言 對于算法工程師來說&#xff0c;語言從來都不是關鍵&#xff0c;關鍵是快速學習以及解決問題的能力。大學的時候參加ACM/ICPC一直使用的是C語言&#xff0c;實習的時候做一個算法策略后臺用的是php&#xff0c;畢業后做策略算法開發&#xff0c;因為要用spark&#x…

24考研408大變化,25考研高分上岸規劃+應對策略

巧了&#xff0c;我有現成的經驗&#xff1a; 數學和專業課的成績都不高不低&#xff0c;剛好夠用&#xff0c;其實408想上岸&#xff0c;不僅僅要學好408&#xff0c;還要學好考研數學&#xff0c;這是我的肺腑之言&#xff0c;我復試的時候&#xff0c;我知道的那些沒有進復試…

高通SDX12:Voice Over USB 功能調試

一、功能概述及使用環境 Linux PC 作為上位機,內置 SLIC基于高通 SDX12 平臺的設備作為從設備,通過USB連接到 Linux PC 上,在 PC 上枚舉 UAC 設備從設備進行 MO/MT Call 時,上位機使用 arecord 進行錄音,音頻數據通過 USB 傳至上位機,上位機停止錄音后再使用 aplay 進行播…

vue element 接口返回數據與控制臺打印數據不一致 踩坑

問題描述&#xff1a; 接口返回數據正常&#xff0c;&#xff0c;控制臺打印不對&#xff0c;element el-switch表格中使用&#xff0c;控制臺打印數據被改變 如下正常數據 數據id 17狀態是0 控制臺打印狀態卻是1 造成原因&#xff1a; element el-seitch組件修改了狀態 修…

解決方案:昇騰aarch64服務器安裝CUDA+GCC+CMake,編譯安裝Pytorch,華為昇騰HPC服務器深度學習環境安裝全流程

目錄 一、安裝CUDA和cudnn1.1、下載CUDA驅動1.2、安裝CUDA驅動1.3、配置環境變量1.4、安裝cudnn1.5、安裝magma-cuda 二、安裝gcc編譯器三、安裝CMake四、安裝NCCL五、編譯安裝Pytorch5.1、前提準備5.2、下載pytorch源碼5.3、配置環境變量5.4、Pytorch編譯安裝5.5、測試Pytorch…

Python教程:Python操作MySQL基礎使用

8、Python操作MySQL基礎使用 8.1 安裝pymysql pip install pymysql8.2 測試連接 測試代碼 from pymysql import Connection# 獲取到MySQL數據庫的鏈接對象 conn Connection(# 主機名hostlocalhost,# 端口號,默認3306port3306,# 賬戶名userroot,# 密碼password3535 )# 打印…

日志分析集群最新版

日志分析集群-8版本 作者&#xff1a;行癲&#xff08;盜版必究&#xff09; 第一部分&#xff1a;Elasticsearch 一&#xff1a;環境準備 1.簡介 ? 部署模式&#xff1a;es集群采用無主模式 ? es版本&#xff1a;8.13.4 ? jdk版本&#xff1a;使用es內嵌的jdk21&#x…