Как реализовать (глобальный) контроллер типа MVC в приложении VB.Net (форма Windows)? - PullRequest
1 голос
/ 04 апреля 2019

Я привык к созданию (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.

1 Ответ

2 голосов
/ 04 апреля 2019

По умолчанию приложения VB.NET используют загадочную Windows Application Framework , что означает, что процесс сборки добавляет для вас точку входа, которая автоматически запускает любую форму, которую вы используете в качестве основной формы. Вы можете получить доступ к этим настройкам через Свойства проекта> Приложение> Свойства платформы приложения Windows .

Если вы не хотите использовать платформу, снимите флажок Включить каркас приложения и затем выберите, что вы хотите использовать Sub Main в качестве Объект запуска . Затем вы можете создать модуль с методом Public Sub Main, который будет точкой входа в приложение.

В основном, если вы хотите показать форму, просто позвоните Application.Run и передайте ей экземпляр формы, которую вы хотите показать (вы можете вызывать ее несколько раз подряд, если хотите).

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...