我有一個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