为什么更改表单语言时按钮的位置和大小会发生变化?

问题描述

我正在 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 (将#修改为@)