现在的位置: 首页 > 综合 > 正文

c# winform 多语言切换 本地化

2012年08月16日 ⁄ 综合 ⁄ 共 1405字 ⁄ 字号 评论关闭
using System;
using System.Windows.Forms;
using System.ComponentModel;
using System.Threading; /// 线程空间

namespace Liang.LanguageLibrary
{
///

/// 语言库 class
///

public class SetLanguage
{
///

/// 设置当前程序的界面语言
///

/// 语言
/// 窗体
/// 窗体类型
public static void SetLang(string lang, Form form, Type frmtype)
{
Thread.CurrentThread.CurrentUICulture = new System.Globalization.CultureInfo(lang);
if (form != null)
{
ComponentResourceManager resources = new ComponentResourceManager(frmtype);
resources.ApplyResources(form, "$this");
AppLang(form, resources);
}
}
#region AppLang for Control
///

/// 遍历窗体所有控件,针对其设置当前界面语言
///

/// /// private static void AppLang(Control control, ComponentResourceManager resources)
{
if (control is MenuStrip)
{
//将资源应用与对应的属性
resources.ApplyResources(control, control.Name);
MenuStrip ms = (MenuStrip)control;
if (ms.Items.Count > 0)
{
foreach (ToolStripMenuItem c in ms.Items)
{
//调用 遍历菜单 设置语言
AppLang(c, resources);
}
}
}

foreach (Control c in control.Controls)
{
resources.ApplyResources(c, c.Name);
AppLang(c, resources);
}
}
#endregion

#region AppLang for menuitem
///

/// 遍历菜单
///

/// /// private static void AppLang(ToolStripMenuItem item, System.ComponentModel.ComponentResourceManager resources)
{
if (item is ToolStripMenuItem)
{
resources.ApplyResources(item, item.Name);
ToolStripMenuItem tsmi = (ToolStripMenuItem)item;
if (tsmi.DropDownItems.Count > 0)
{
foreach (ToolStripMenuItem c in tsmi.DropDownItems)
{
//if (tsmi != ToolStripSeparator)
//{ }
AppLang(c, resources);
}
}
}
}
#endregion
}
}

调用:SetLanguage.SetLang("zh-CHS", this, typeof(Loginfrm));

抱歉!评论已关闭.