c# – 如何在运行时更改WinForms应用程序的文化

前端之家收集整理的这篇文章主要介绍了c# – 如何在运行时更改WinForms应用程序的文化前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我在C#中创建了 Windows Form Program.我有一些本地化问题.我有2种语言的资源文件(一种用于英文,另一种用于法文).我想单击每个语言按钮,并在运行时更改语言.

但是当我点击按钮时,它不起作用.我正在使用这个代码.

private void btnfrench_Click(object sender,EventArgs e)
{
    getlanguage("fr-FR");
}

private void getlanguage(string lan)
{
    foreach (Control c in this.Controls)
    {
        ComponentResourceManager cmp = 
            new ComponentResourceManager(typeof(BanksForm));
        cmp.ApplyResources(c,c.Name,new CultureInfo(lan));
    }
}

会有什么帮助吗

非常感谢….

解决方法

这是有效的:
private void button1_Click(object sender,EventArgs e)
{
    System.Threading.Thread.CurrentThread.CurrentUICulture = new System.Globalization.CultureInfo("fr-BE");
    ComponentResourceManager resources = new ComponentResourceManager(typeof(Form1));
    resources.ApplyResources(this,"$this");
    applyResources(resources,this.Controls);
}

private void applyResources(ComponentResourceManager resources,Control.ControlCollection ctls)
{
    foreach (Control ctl in ctls)
    {
        resources.ApplyResources(ctl,ctl.Name);
        applyResources(resources,ctl.Controls);
    }
}

小心避免添加这样的口哨,没有人会使用.

猜你在找的C#相关文章