我有一个winforms应用程序,用户必须能够在运行时更改语言。如何在运行时更改语言而无布局问题
为了概括开关,避免硬编码控制的名字我尝试以下扩展名:
internal static void SetLanguage(this Form form, CultureInfo lang)
{
ComponentResourceManager resources = new ComponentResourceManager(form.GetType());
ApplyResourceToControl(resources, form, lang);
resources.ApplyResources(form, "$this", lang);
}
private static void ApplyResourceToControl(ComponentResourceManager resources, Control control, CultureInfo lang)
{
foreach (Control c in control.Controls)
{
ApplyResourceToControl(resources, c, lang);
resources.ApplyResources(c, c.Name, lang);
}
}
这不会改变所有的字符串。
但是,其副作用是窗口的全部内容被调整为该窗口的原始启动大小,无论当前大小是多少。
如何防止布局更改或启动新的布局计算?
我希望我可以投票给你更多,然后一次很有帮助! – Bosak 2012-09-24 19:10:31