創(chuàng)建窗體
開發(fā)環(huán)境:VS2022 社區(qū)版 中文界面 .Net 6.0 WinForm界面程序
- 創(chuàng)建窗體,并添加幾個按鈕;添加切換語言的RadioButton;
- 修改窗體的Localizable屬性為True
- 修改窗體的Language屬性為’英語(美國)',修改按鈕文本
- 編譯生成工程
- 檢查解決方案資源管理器的Form1.cs下面是否生成Form1.en-US.resx文件
注意事項
- 建議不要手動修改*.resx文件,特別是名稱欄
- 修改語言,生成項目后,關閉窗體設計器再次打開才會顯示不同語言版本的窗體設計器
效果
關鍵代碼
Radio按鈕選擇事件及封裝的語言管理類
public partial class Form1 : Form
{
private void ra_ZH_CheckedChanged(object sender, EventArgs e)
{
LanguageManager.ChangeLanguage(this, LanguageManager.LangKeys.zh_CN);
}
private void ra_EN_CheckedChanged(object sender, EventArgs e)
{
LanguageManager.ChangeLanguage(this, LanguageManager.LangKeys.en_US);
}
}
/// <summary>
/// WinForm本地化語言管理
/// </summary>
public static class LanguageManager
{
/// <summary>
/// 常用語言
/// </summary>
public static class LangKeys
{
public const string zh_CN = "zh-CN";
public const string zh_TW = "zh-TW";
public const string en_US = "en-US";
}
private static void ApplyResources(ComponentResourceManager resources, Control root, string Name)
{
foreach (var item in root.Controls)
{
Control? ctl = item as Control;
if (ctl != null)
{
ApplyResources(resources, ctl, ctl.Name);
}
}
resources.ApplyResources(root, Name);
}
/// <summary>
/// 改變窗體語言
/// </summary>
/// <param name="root">窗體</param>
/// <param name="LanguageKey">語言Key帶后綴的(如:zh-CN)</param>
public static void ChangeLanguage(Form root, string LanguageKey)
{
Thread.CurrentThread.CurrentUICulture = new CultureInfo(LanguageKey);
ComponentResourceManager resources = new ComponentResourceManager(root.GetType());
ApplyResources(resources, root, root.Name);
}
}
截圖
窗體屬性:文章來源:http://www.zghlxwxcb.cn/news/detail-459504.html
資源管理器不同語言文件:Form1.resx為默認語言中文
不同語言的窗體設計器:文章來源地址http://www.zghlxwxcb.cn/news/detail-459504.html
優(yōu)缺點
- LanguageManager使用遞歸查找控件;自動切換語言不需要每增加一個控件加一句代碼;
- resx文件的名稱的資源名稱不能手動修改
- 有多個語言版本時建議先復制一個非默認的resx文件;復制一份并修改文件名稱
到了這里,關于WinForm界面程序 多語言切換[.Net 6.0]的文章就介紹完了。如果您還想了解更多內容,請在右上角搜索TOY模板網以前的文章或繼續(xù)瀏覽下面的相關文章,希望大家以后多多支持TOY模板網!