Zdravím, mám dotaz. Mám windows form, dva resource soubory (cz a eng) a potřebuju comboboxem přepnout jazyk za běhu programu. Tenhle kód fungoval, přepínal během vteřiny. Přijdu z oběda zkusím to, a změna trvá 27 vteřin, během kterých je aplikace zaseklá. Restart VS a PC nepomohl, takže bude zádrhel předpokládám jinde. Foreach projíždí cca 270 labelů, textboxů atd. Nějaký nápad, proč to najednou nejde?
#region Zmena jazyka
private List<Control> ChangeLanguage(Control container, List<Control> list)
{
if (cbJazyky.SelectedItem.ToString() == "English")
{
lang = "en";
}
if (cbJazyky.SelectedItem.ToString() == "Czech")
{
lang = "cs-CZ";
}
foreach (Control c in container.Controls)
{
//vycet typu Controls ke zmene jazyka
if (c is Label || c is GroupBox || c is DevExpress.XtraTab.XtraTabPage || c is TextBox || c is System.Windows.Forms.ToolStripMenuItem) list.Add(c);
if (c.Controls.Count > 0)
list = ChangeLanguage(c, list);
ComponentResourceManager resourcesComponents = new ComponentResourceManager(typeof(HlavniOknoMobile));
resourcesComponents.ApplyResources(c, c.Name, new CultureInfo(lang));
}
return list;
}
private List<Control> GetAllControls(Control container)
{
return ChangeLanguage(container, new List<Control>());
}
//zmena vyberu jazyka v comboboxu
private void cbJazyky_SelectedIndexChanged(object sender, EventArgs e)
{
ChangeLanguage(this, new List<Control>());
}
#endregion