Если вы хотите написать свой собственный метод Main
и отобразить свою собственную форму запуска, вам необходимо вызвать Application.Run
и передать форму в качестве аргумента. Вызываемый вами метод Show
немедленно возвращается, и поэтому ваш метод Main
завершается, а приложение закрывается.
Вот как запускаются приложения C# WinForms:
static class Program
{
/// <summary>
/// The main entry point for the application.
/// </summary>
[STAThread]
static void Main()
{
Application.EnableVisualStyles();
Application.SetCompatibleTextRenderingDefault(false);
Application.Run(new Form1());
}
}
Вы должен делать в основном то же самое:
Module Program
<STAThread>
Sub Main()
Application.EnableVisualStyles()
Application.SetCompatibleTextRenderingDefault(False)
Application.Run(Form1)
End Sub
End Module
Если вам нужно поместить этот вызов Application.Run
внутри блока If
, пусть будет так.
Тем не менее, вероятно, нет смысла делая это. Необходимая вам функциональность уже встроена в VB Application Framework. Просто создайте проект приложения VB WinForms как обычно, а форму запуска оставьте выбранной как обычно. Затем вы можете открыть файл кода событий приложения из свойств проекта и обработать событие Startup
. В этом обработчике событий, если вы установите e.Cancel
на True
, приложение завершится без создания формы запуска. Это означает, что вы можете сделать это:
Imports System.IO
Imports Microsoft.VisualBasic.ApplicationServices
Namespace My
' The following events are available for MyApplication:
' Startup: Raised when the application starts, before the startup form is created.
' Shutdown: Raised after all application forms are closed. This event is not raised if the application terminates abnormally.
' UnhandledException: Raised if the application encounters an unhandled exception.
' StartupNextInstance: Raised when launching a single-instance application and the application is already active.
' NetworkAvailabilityChanged: Raised when the network connection is connected or disconnected.
Partial Friend Class MyApplication
Private Sub MyApplication_Startup(sender As Object, e As StartupEventArgs) Handles Me.Startup
If Not File.Exists("C:\Mingw\bin\g++.exe") Then
'Display error page and be sure to call ShowDialog rather than Show.
'Exit without creating the startup form.
e.Cancel = True
End If
End Sub
End Class
End Namespace
Если файл действительно существует, приложение запустится нормально с отображаемой формой запуска.