您的位置:首页 > 编程语言 > C#

c# winform 多语言切换 本地化

2010-03-29 15:05 204 查看
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));
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: