在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:编辑以更准确地描述问题。