В проекте WinForms VB.NET 4.72 я поместил форму MDI (MDIForm1), форму MDIChild (Form1) и модуль. В модуле я объявил метод расширения:
<Extension()>
Public Sub ShowChild(SourceForm As Form)
MessageBox.Show(My.Application.Culture.ToString)
End Sub
В событии Load MDIForm у меня есть следующий код:
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
При отладке проекта MessageBox, который появляется при вызове ShowChild, отображает «en-US» вместо значения NewCultureName. Если в операторе «Form1.ShowChild» ставится точка останова, я вижу, что культура действительно изменилась на значение NewCultureName. Приложение работает так, как будто есть два разных экземпляра My.Application, один в форме MDI, а другой внутри ShowChild. Почему это происходит?
2019-04-14: отредактировано для более точного описания проблемы.