參考官方檔案我實作了程式的中英文切換:官方提供的包只能解決空間默認的部分,比如Close按鈕的Tip,還有WizardControl的Next,Finish按鈕的Text切換;
其他的比如SimpleButton的名稱,還有GridControl中每一個Column的Caption屬性值都是需要自己一個個手動設定的。
設定完成后需要在程式的入口類里執行
Thread.CurrentThread.CurrentCulture = new System.Globalization.CultureInfo("zh-CN");但是這個方法必須要重啟一次才能生效;
有沒有什么方法可以直接切換語言,不用再重啟的?
uj5u.com熱心網友回復:
我在執行了以下代碼之后
// The following line provides localization for the application's user interface.
CultureInfo culture = CultureInfo.CreateSpecificCulture("zh-CN");
Thread.CurrentThread.CurrentUICulture = culture;
// The following line provides localization for data formats.
Thread.CurrentThread.CurrentCulture = culture;
// Set this culture as the default culture for all threads in this application.
// Note: The following properties are supported in the .NET Framework 4.5+
CultureInfo.DefaultThreadCurrentCulture = culture;
CultureInfo.DefaultThreadCurrentUICulture = culture;
我又執行了
InitializeComponent();
結果中文界面出現了,BUT和原來的重疊在一起了,頁面布局整個大錯亂。
各位有解決的思路嗎?
怎樣才能讓控制元件在不重啟的前提下重新加載一下語言的資源檔案呢?
uj5u.com熱心網友回復:
InitializeComponent();這個是界面控制元件初始化,已經執行了一次,肯定再執行會亂的吧。控制元件不重啟,可以試著把原界面隱藏,然后更換語言后,重新new一個界面出來,可以嗎? 然后Kill老的界面
uj5u.com熱心網友回復:
試一下清理快取?Thread.CurrentThread.CurrentUICulture = CultureInfo.GetCultureInfo(name);
Thread.CurrentThread.CurrentUICulture.ClearCachedData();
Thread.CurrentThread.CurrentCulture = CultureInfo.GetCultureInfo(name);
Thread.CurrentThread.CurrentCulture.ClearCachedData();
uj5u.com熱心網友回復:
不太行,因為這個界面就是起始界面;
Application.Run(new FormStart());
uj5u.com熱心網友回復:
也不行,因為當前控制元件已經實體化結束了,只改變當前執行緒的Culture屬性不管用,我嘗試使用Control.Refresh()方法遍歷控制元件也不行。怎樣才能讓控制元件重新加載一下語言配置啊!!
轉載請註明出處,本文鏈接:https://www.uj5u.com/net/248339.html
標籤:C#
上一篇:哪位大神幫我生成個密碼
