DevExpress多语言即时切换问题

那海不及少年蓝 2021-01-13 01:54:27
参考官方文档我实现了程序的中英文切换:官方提供的包只能解决空间默认的部分,比如Close按钮的Tip,还有WizardControl的Next,Finish按钮的Text切换;
其他的比如SimpleButton的名称,还有GridControl中每一个Column的Caption属性值都是需要自己一个个手动设置的。
设置完成后需要在程序的入口类里执行
Thread.CurrentThread.CurrentCulture = new System.Globalization.CultureInfo("zh-CN");

但是这个方法必须要重启一次才能生效;

有没有什么方法可以直接切换语言,不用再重启的?
...全文
1354 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
  • 打赏
  • 举报
回复
引用 3 楼 白衣如花 的回复:
试一下清理缓存? Thread.CurrentThread.CurrentUICulture = CultureInfo.GetCultureInfo(name); Thread.CurrentThread.CurrentUICulture.ClearCachedData(); Thread.CurrentThread.CurrentCulture = CultureInfo.GetCultureInfo(name); Thread.CurrentThread.CurrentCulture.ClearCachedData();
也不行,因为当前控件已经实例化结束了,只改变当前线程的Culture属性不管用,我尝试使用Control.Refresh()方法遍历控件也不行。怎样才能让控件重新加载一下语言配置啊!!
  • 打赏
  • 举报
回复
引用 2 楼 堆代码的爱因斯坦 的回复:
InitializeComponent();这个是界面控件初始化,已经执行了一次,肯定再执行会乱的吧。 控件不重启,可以试着把原界面隐藏,然后更换语言后,重新new一个界面出来,可以吗? 然后Kill老的界面
不太行,因为这个界面就是起始界面; Application.Run(new FormStart());
白衣如花 2021-01-13
  • 打赏
  • 举报
回复
试一下清理缓存?


Thread.CurrentThread.CurrentUICulture = CultureInfo.GetCultureInfo(name);
Thread.CurrentThread.CurrentUICulture.ClearCachedData();
Thread.CurrentThread.CurrentCulture = CultureInfo.GetCultureInfo(name);
Thread.CurrentThread.CurrentCulture.ClearCachedData();
  • 打赏
  • 举报
回复
InitializeComponent();这个是界面控件初始化,已经执行了一次,肯定再执行会乱的吧。 控件不重启,可以试着把原界面隐藏,然后更换语言后,重新new一个界面出来,可以吗? 然后Kill老的界面
  • 打赏
  • 举报
回复
我在执行了以下代码之后

                    // The following line provides localization for the application's user interface. 
                    CultureInfo culture = CultureInfo.CreateSpecificCulture("zh-CN");
                    Thread.CurrentThread.CurrentUICulture = culture;

                    // The following line provides localization for data formats. 
                    Thread.CurrentThread.CurrentCulture = culture;

                    // Set this culture as the default culture for all threads in this application. 
                    // Note: The following properties are supported in the .NET Framework 4.5+
                    CultureInfo.DefaultThreadCurrentCulture = culture;
                    CultureInfo.DefaultThreadCurrentUICulture = culture;
我又执行了
InitializeComponent();
结果中文界面出现了,BUT和原来的重叠在一起了,页面布局整个大错乱。 各位有解决的思路吗? 怎样才能让控件在不重启的前提下重新加载一下语言的资源文件呢?

111,119

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • Creator Browser
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧