using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Windows.Forms;
using System.ComponentModel;
using System.Threading;namespace GlobalizationTest
{
public class LanguageLibrary
{
public class SetLanguage
{
/// <summary>
/// 设置当前程序的界面语言
/// </summary>
/// <param name="lang">语言 </param>
/// <param name="form">窗体</param>
/// <param name="frmtype">窗体类型</param>
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,form.Width);
}
}
#region AppLang for Control
/// <summary>
/// 遍历窗体所有控件,针对其设置当前界面语言
/// </summary>
/// <param name="contrl"></param>
/// <param name="resoureces"></param>
private static void AppLang(Control control, ComponentResourceManager resources,int FormWidth)
{
if (control is MenuStrip)
{
control.Width = FormWidth;
//将资源应用与对应的属性
resources.ApplyResources(control, control.Name);
MenuStrip ms = (MenuStrip)control;
if (ms.Items.Count > 0)
{
foreach (ToolStripMenuItem c in ms.Items)
{
//调用 遍历菜单 设置语言
AppLang(c, resources, FormWidth);
}
}
} foreach (Control c in control.Controls)
{
resources.ApplyResources(c, c.Name);
AppLang(c, resources,0);
}
}
#endregion #region AppLang for menuitem
/// <summary>
/// 遍历菜单
/// </summary>
/// <param name="item"></param>
/// <param name="resources"></param>
private static void AppLang(ToolStripMenuItem item, System.ComponentModel.ComponentResourceManager resources, int FormWidth)
{
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, FormWidth);
}
}
}
}
#endregion
}
}
}调用方法:
LanguageLibrary.SetLanguage.SetLang("zh-CHS", this, typeof(Form1));
异常情况如下:
1)切换前:2)切换后:注意:menuStrip、toolStrip、groupBox都缩回原始尺寸了,属性DOCK设置不起作用了,
有兴趣的我发给Demo程序研究一下?
解决方案 »
- 关于textbox回车响应问题。
- 解释一段简单的泛型代码
- C# 一个放了6天无回复的问题 端口占用问题....郁闷...
- |M| 为什么我设置的txtUserName.Focus() 无效 zyciis
- c# form 释放问题
- datetime 转换问题,在线等!
- 需要实现这样的功能,能够按关键字搜索附件word里的内容,如果有则显示在web页中,而不是以连接方式打开
- Split("\"")拆分字符串不可以么/?
- 自绘控件加上vscrollbar后也能产生滚动条,但鼠标的滚轮就是不起用,如何加上这个事件呢?
- 我把网站部署到IIS上 一段时间能浏览 一段时间后又不能浏览 我都郁闷死了 要找不到资源
- 请教下PANEL内放置调用FORM缩放的问题
- 两贴150分请教版主:bdmh caozhy lxcnn以及各位达人,软件多语言动态切换问题
http://msdn.microsoft.com/zh-cn/library/y99d1cd3(v=vs.90).aspx
A:中文下,menuStrip、toolStrip、groupBox都是充满窗体的,menuStrip、toolStrip的Dock值为Top,groupBoX的Dock值为Fill.我们知道,这种情况下,水平方向宽度都是撑满屏幕的,如(图一)B:menuStrip的“语言”菜单下,有两个子菜单,点击英文后,Click事件中调用方法LanguageLibrary.SetLanguage.SetLang("en-US", this, typeof(Form1))方法;切换到英文界面、toolStrip都缩回原始尺寸了,属性DOCK设置不起作用了,出现图2的情况。请问达人,如何解决啊??你一个裤衩也行,能解决就说明你具备星星潜质
this.WindowState = FormWindowState.Maximized;
http://download.csdn.net/detail/tacit/5508145