问题描述
本人在开发winform项目,需要设计多语言功能,使用了.NET自带的多语言language属性,设计时设想能在不用重启软件情况下即可生效,例如一个已打开的子窗体,在执行主窗体多语言切换时,可以实现子窗体的文本替换功能,但是布局却没有却出现了状况,也使用了遍历控件等方式让其加载自己的资源文件内容,但是控件的布局却出了状况,感觉没有办法对已打开的窗体实现多语言,难道一定要重启软件来实现吗?以下是遍历控件来加载自己的资源,但布局却没有效果foreach(Controlctllinctl.Controls){res.ApplyResources(ctll,ctll.Name);foreach(Controlctlllinctll.Controls){res.ApplyResources(ctlll,ctlll.Name);foreach(Controlctllllinctlll.Controls){res.ApplyResources(ctllll,ctllll.Name);}}}切换前切换后,发现控件都没有按照原来的anchor左右保持间距,代码跟踪其属性值是对的,但是效果却失灵了求大家帮我分析下,有谁解决过类似的问题,多谢各位了
解决方案
解决方案二:
你的ApplyResources方法都做哪些事情?
解决方案三:
不好说什么问题
解决方案四:
难道winform多语言这么垃圾吗
解决方案五:
别沉底啊,求前辈们赐教
解决方案六:
多谢各位的关注了,看来没有遇到过此问题的朋友,多谢了
解决方案七:
同样遇到这个问题有没有人解决了
解决方案八:
展开cs文件,看Desinger.cs和resx文件的内容。本质上来说,UI怎么扩展,还是依赖的InitializeComponent(),检查它的问题就能找到原因
解决方案九:
之前做的比tabControl+userControl+datagridview都可以,完全没有问题有些控件比较特殊,需要单独处理如果某个属性值在目标语言.resx中没有指定,则会自动使用默认语言中的值,你自己看一下