写了一个winform 多国语言切换的助手组件类
版权声明:原创作品,允许转载,转载时请务必以超链接形式标明文章 原始出处 、作者信息和本声明。否则将追究法律责任。http://happyoldbear.blog.51cto.com/231048/43049 |
最近在网上综合了各种资料,写了一个完整的切换语言助手类。
接口SetLanguage(string languageName,Form form)
可以对某个窗口进行语言切换。
languageName是语言的代码。
目前可以支持窗口,菜单,工具栏,按钮等。
但是还没有找到比较好的,通用的listbox,combobox的方法。
希望兄弟们涌跃讨论,能否找到一个解决listbox,combobox的方法。
主要思想:
循环设置所有的窗口控件,菜单和工具栏需要递归设置所有的items.
源代码如下:
using System;
using System.Collections.Generic; using System.Text; using System.ComponentModel; using System.Threading; using System.Windows.Forms; using System.Globalization; namespace Hob.Toolbox.Classes
{ /// <summary> /// 动态切换语言的助手类 /// 支持动态切换窗口,菜单及子项,工具栏及子项,其他控件属性。 /// 2007.8.23 /// </summary> public partial class LocalizeHelper:Component { #region 构造函数 public LocalizeHelper() { InitializeComponent(); } public LocalizeHelper(IContainer container)
{ container.Add(this); InitializeComponent(); } #endregion /// <summary>
/// public method SetLanguage /// </summary> /// <param name="languageName"></param> /// <param name="form"></param> /// <returns></returns> public bool SetLanguage(string languageName,Form form) { try { Thread.CurrentThread.CurrentUICulture = CultureInfo.GetCultureInfo(languageName); Thread.CurrentThread.CurrentCulture = CultureInfo.GetCultureInfo(languageName); ComponentResourceManager resources = new ComponentResourceManager(form.GetType()); resources.ApplyResources(form, "$this"); ApplyResouce(form, resources); return true; } catch { return false; } } /// <summary>
/// set language for control and all child controls /// </summary> /// <param name="control"></param> /// <param name="resources"></param> private void ApplyResouce(Control control, ComponentResourceManager resources) { //for every control foreach (Control c in control.Controls) { resources.ApplyResources(c, c.Name); ApplyResouce(c, resources); if (c is ToolStrip) ApplyResouce(c as ToolStrip, resources); } } /// <summary>
/// set language for toolstrip all child item /// </summary> /// <param name="toolstrip"></param> /// <param name="resources"></param> private void ApplyResouce(ToolStrip toolstrip, ComponentResourceManager resources) { if (toolstrip.Items.Count > 0) { foreach (ToolStripItem item in toolstrip.Items) ApplyResouce(item, resources); } } /// <summary>
/// set language for toolstripitem and all child items /// </summary> /// <param name="item"></param> /// <param name="resources"></param> private void ApplyResouce(ToolStripItem item, ComponentResourceManager resources) { resources.ApplyResources(item, item.Name); if (item is ToolStripDropDownItem) { ToolStripDropDownItem ditem = item as ToolStripDropDownItem; if (ditem.DropDownItems.Count > 0) { foreach(ToolStripItem sitem in ditem.DropDownItems) ApplyResouce(sitem, resources); } } } } } 整个工程代码下载: 本文出自 “欢乐老熊” 博客,请务必保留此出处http://happyoldbear.blog.51cto.com/231048/43049 本文出自 51CTO.COM技术博客 |
附件下载:
源代码
源代码


lijun4183
博客统计信息
热门文章
最新评论
友情链接
