Подтвердить что ты не робот

Запустить приложение VB.NET GUI с помощью Sub Main или создать объект запуска формы?

Есть ли причина запуска программы GUI (приложение для Windows), написанной на VB.NET в Sub Main модуля, а не непосредственно в форме?

EDIT: программа не будет принимать никаких параметров командной строки и будет выполняться как программа GUI всегда.

4b9b3361

Ответ 1

Основная причина использования Main() в VB.NET 1.x заключалась в добавлении кода, который должен был запускаться до загрузки любых форм. Например, вам может потребоваться определить, был ли загружен экземпляр вашего приложения Windows Forms. Или вы можете перехватить любое необработанное исключение для AppDomain:

AddHandler AppDomain.CurrentDomain.UnhandledException, AddressOf MyExceptionFilter

Но в следующей версии VB и Visual Studio 2005 появилась новая событие My.Application.Startup, чтобы добавить код, который должен запускаться до загрузки любых форм.

Обратите внимание, что код для обработчика событий Startup хранится в файле ApplicationEvents.vb, который по умолчанию скрыт.

Ответ 2

Вы можете сделать это в любом случае, но вы должны действительно сохранить код только в форме, которая напрямую связана с элементами операций и пользовательского интерфейса в этой форме. Код запуска приложения не связан с пользовательским интерфейсом, который обычно связан с экранами заставки, проверяет сетевое подключение, проверяет только один экземпляр, настраивает параметры настройки пользователя и т.д.

После того, как вышеуказанные элементы (или соответствующий код инициализации для вашего приложения) будут завершены, Sub Main может создать экземпляр основной формы, а затем показать его, чтобы пользователь мог начать взаимодействие с вашим приложением.

Отделяет код запуска от вашего кода формы. Позже, когда вы будете поддерживать приложение, вы будете рады, что разделили их.

Ответ 3

Да, и я сделал это несколько раз.

Одна из причин заключается в том, что если ваше приложение представляет собой COM EXE (говоря теперь с точки зрения VB6), вы хотите, чтобы иметь возможность определять, в каком контексте вызывается EXE (запускается или разговаривается каким-то другим приложение).

Например:

Sub Main()
    If App.StartMode = vbSModeAutomation Then
        ...
    Else
        ...
    End If
End Sub

Другим является, если вы хотите, чтобы ваше приложение могло обрабатывать любые параметры командной строки.

Например:

Sub Main()
    If App.PrevInstance Then End
    If InStr(Command, "/s") > 0 Then
        Form1.Show
    ElseIf InStr(Command, "/p") > 0 Then
        LoadPicture ("c:\windows\Zapotec.bmp")
    End If
End Sub

(из одной из моих попыток сделать экранную заставку)

Ответ 4

Нет, если вы всегда хотите показать эту форму.
Да, если вы иногда хотите использовать свое приложение без GUI, просто используйте командную строку.

Ответ 5

Debes abrir el formulario con el método.showdialog, as queda como un formulario tipo modal y la aplicación no se cierra hasta que que dicho formulario es cerrado.