C# 当我更改表单的语言时,为什么按钮的位置和大小会发生变化?
我正在winforms上开发一个包含许多控件的应用程序。我希望应用程序能够使用多种语言,并且按钮和标签的文本能够正确更改。问题是,在我第一次更改语言(从默认更改为西班牙语/英语)时,按钮和标签的位置和大小都会更改,但我希望它们保持最初的状态。有人知道为什么会这样吗 这是我使用的代码:C# 当我更改表单的语言时,为什么按钮的位置和大小会发生变化?,c#,winforms,controls,multilingual,C#,Winforms,Controls,Multilingual,我正在winforms上开发一个包含许多控件的应用程序。我希望应用程序能够使用多种语言,并且按钮和标签的文本能够正确更改。问题是,在我第一次更改语言(从默认更改为西班牙语/英语)时,按钮和标签的位置和大小都会更改,但我希望它们保持最初的状态。有人知道为什么会这样吗 这是我使用的代码: private void English_ToolStrip_Click(object sender, EventArgs e) { English_ToolStrip.Ch
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));
}
}
我想我在初始化表单时可能遗漏了一些东西,因为只有在我第一次更改语言时才会更改大小和位置。在那之后,我换哪种语言或换多少次都不重要,但大小和位置保持不变
检查是否有多个资源文件(
form.en.resx
和form.en US.resx
是不同的)。在winforms designer中,您可以加载(并保存)相应资源文件中的所有数据。控件位置
和大小
对于每种语言可能不同。是不是按钮文本实际上更大,因此需要更多空间?@Sinatr我有三个资源文件:Form1.resx、Form1.en.resx和Form1.es.resx,它们是在我更改每种语言的文本时自动生成的。我看过了,所有语言的位置和大小都是一样的。@Neil我试过使用不同的按钮文本,即使文本较短,大小也总是会发生变化。你能链接到显示大小变化(前后)的图片吗?