微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

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

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

我正在 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 举报,一经查实,本站将立刻删除。