在一个 VB.NET 4.72 WinForms 项目中,我放置了一个 MDI 表单 (MDIForm1)、一个 MDIChild 表单 (Form1) 和一个模块。在模块中,我声明了一个扩展方法:
<Extension()>
Public Sub ShowChild(SourceForm As Form)
MessageBox.Show(My.Application.Culture.ToString)
End Sub
在 MDIForm 的 Load 事件中,我有以下代码:
My.Application.ChangeCulture(NewCultureName)
My.Application.ChangeUICulture(NewCultureName)
'NewCultureName is a string which is set to any valid value other than "en-US".
Form1.ShowChild
调试项目时,调用 ShowChild 时出现的 MessageBox 显示“en-US”而不是 NewCultureName 的值。如果在“Form1.ShowChild”语句中放置断点,我可以看到文化确实已更改为 NewCultureName 的值。该应用程序的行为就好像有两个不同的 My.Application 实例,一个在 MDI 表单中,另一个在 ShowChild 中。为什么会这样?
2019-04-14:编辑为更准确的问题描述。