Я привык к созданию (Excel) программ для пользовательских форм VBA в стиле MVC, и недавно я смотрел на VB.Net немного больше.
В общем, я бы создал приложение пользовательской формы в стиле MVC в VBA, создав функцию «Initialize», которая создает экземпляр модуля «Controller» и использует метод «LaunchProgram», содержащийся в этом контроллере. Этот метод создаст экземпляр модели и представления, используемых приложением, а затем представит представление пользователю.
Например,
Public Sub Launch()
With New Controller
.Present
End With
Debug.Print "Execution ended"
End Sub
и затем в модуле Controller (class) у меня будет такой код, как
Private WithEvents m_View As View
Private m_Model As Model
Public Sub Present()
Set m_View = New View
Set m_Model = New Model
m_View.Show vbModal
End Sub
Моя проблема с VB.Net заключается в том, что не существует очевидного способа создать эквивалент подпрограммы 'Launcher', которая контролирует выполнение программы, и вместо этого просто представляет экземпляр основной формы по умолчанию пользователю при запустить программу. Я попытался воспроизвести желаемую архитектуру, создав основную форму, которая (должна быть) немедленно скрыта при запуске программы. Затем эта скрытая форма (должна) создавать конкретные экземпляры всех других форм, контролируя, как пользовательский ввод обрабатывается и возвращается в соответствии с общей методологией MVC.
Однако это не работает, так как код VB.Net ...
Public mSetupForm As SetupForm
Public mOutputForm As OutputForm
Private Sub Form1_Load(sender As Object, e As EventArgs) Handles MyBase.Load
Debug.Print("Program initialized")
mSetupForm = New SetupForm
mOutputForm = New OutputForm
Me.Hide()
mSetupForm.Show()
End Sub
... не скрывает Form1.