Это потому, что Form1 будет основной формой заявки. В частности, он будет передан методу Application.Run
, который создаст объект ApplicationContext
с формой Form1, назначенной в качестве основной формы. Когда приложение запускается, оно проверяет, имеет ли ApplicationContext
основную форму, и если да, то свойство Visible
этой формы будет установлено на true
, что приведет к отображению формы.
Или, выраженное в коде, это Application.Run
:
public static void Run(Form mainForm)
{
ThreadContext.FromCurrent().RunMessageLoop(-1, new ApplicationContext(mainForm));
}
RunMessageLoop
вызовет другую внутреннюю функцию для настройки цикла сообщений, и в этой функции мы найдем следующее:
if (this.applicationContext.MainForm != null)
{
this.applicationContext.MainForm.Visible = true;
}
Это то, что заставляет Form1 показывать.
Это также дает подсказку о том, как действовать, чтобы форма Form1 не отображалась автоматически при запуске. Все, что нам нужно сделать, это найти способ запустить приложение, не назначив Form1 в качестве основной формы в ApplicationContext
:
static void Main()
{
Application.EnableVisualStyles();
Application.SetCompatibleTextRenderingDefault(false);
// create the form, but don't show it
Form1 form = new Form1();
// create an application context, without a main form
ApplicationContext context = new ApplicationContext();
// run the application
Application.Run(context);
}