我正在处理一个支持Windows窗体的旧项目。这个项目包含一些ResourceManager,用于支持一些本地化。其思想是调用ResourceManager[“SomeResource”]而不是Resource.SomeResource,它将返回一个本地化字符串。这些本地化字符串将用于窗体初始化的代码中。例如,您有Form1,在Form1.Design.cs中有这样的代码:
Label label1 = new Label();
label1.Text = ResourceManager["SomeResource"];
因此,标签将使用文本中已经本地化的字符串创建。我们需要添加更改UI语言的功能,而无需重新加载表单。
1.我们可以重新设置每个控件的everyText属性,但是这需要很多代码,表单包含很多控件。
1.我们可以调用Form.InitializeComponents(),这个方法会用新的本地化字符串重新创建所有控件,但在某些情况下,它会运行得很慢,因为它会再次重新加载一些大数据。
是否有其他方法可以刷新所有UI控件并获取新的本地化字符串?Windows窗体是否支持某些机制(如WPF中的绑定)来创建Text属性和本地化资源之间的“连接”?
1条答案
按热度按时间6tqwzwtp1#
我认为可以通过在窗体本身或包含其他控件的容器控件上使用
Invalidate()
来实现这一点。