问题描述
我正在 winforms 上开发一个包含许多控件的应用程序。我希望应用程序具有多种语言,并且按钮和标签的文本可以正确更改。问题是,在我第一次更改语言时(从默认更改为西班牙语/英语),按钮和标签更改了它们的位置和大小,但我希望它们保持初始状态。有人知道为什么会这样吗?
这是我使用的代码:
private void English_ToolStrip_Click(object sender,EventArgs e)
{
English_ToolStrip.Checked = true;
Spanish_ToolStrip.Checked = false;
ChangeLanguage(typeof(Form1),"en");
}
private void ChangeLanguage(Type t,string language)
{
Thread.CurrentThread.CurrentCulture = CultureInfo.CreateSpecificCulture(language);
Thread.CurrentThread.CurrentUICulture = CultureInfo.GetCultureInfo(language);
foreach (Control c in Controls)
{
resources.ApplyResources(c,c.Name,new CultureInfo(language));
}
foreach (ToolStripItem item in toolStrip1.Items)
{
if (item is toolstripdropdownItem)
foreach (ToolStripItem dropDownItem in ((toolstripdropdownItem)item).DropDownItems)
{
resources.ApplyResources(dropDownItem,dropDownItem.Name,new CultureInfo(language));
}
resources.ApplyResources(item,item.Name,new CultureInfo(language));
}
}
我想我在初始化表单时可能会遗漏一些东西,因为大小和位置的变化只会在我第一次更改语言时发生。之后,我更改哪种语言或更改多少次都没有关系,但大小和位置保持不变。
These are the controls before changing the language
These are the controls after changing the language
解决方法
暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!
如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。
小编邮箱:dio#foxmail.com (将#修改为@)