winforms 刷新Windows窗体的用户界面

j0pj023g  于 2022-12-23  发布在  Windows
关注(0)|答案(1)|浏览(143)

我正在处理一个支持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属性和本地化资源之间的“连接”?

6tqwzwtp

6tqwzwtp1#

我认为可以通过在窗体本身或包含其他控件的容器控件上使用Invalidate()来实现这一点。

相关问题