Я попытался сделать это, установив для Visible значение false или скрыв его в конструкторе и в событии OnLoad.
Ни один из них не имел никакого эффекта, так как форма устанавливается на Visible после ее создания ипосле запуска события OnLoad в SetVisibleCore.
Установка скрытой формы в событии Shown работает, но форма на мгновение мерцает на экране.
Вы также можете переопределить SetVisibleCoreи установите значение false, но тогда OnLoad не будет запущен, и некоторые другие события будут сбиты с толку, такие как закрытие формы.
Лучшее решение, по моему мнению, это установить форму свернутой, а неотображается на панели задач перед вызовом Application.Run ().
Поэтому вместо:
Application.Run(new MainForm());
do:
MainForm form = new MainForm();
form.WindowState = FormWindowState.Minimized;
form.ShowInTaskbar = false;
Application.Run(form);
Затем приложение будет запущено со всемизапускаются правильные события (даже OnShown), и форма не будет отображаться.
Если вы хотите иметь возможность скрывать / отображать форму как обычно после этого, то вам нужно установить WindowState иShowInTaskbar обратно в Normal и true.
В событии Shown вы можете установить ShownInTaskbar обратно в true и затем правильно скрыть форму.
this.Shown += new System.EventHandler(this.MainFormShown);
...
void MainFormShown(object sender, EventArgs e)
{
this.ShowInTaskbar = true;
this.Visible = false;
}
Установка WindowState обратно на Normal, пока форма скрыта, не имеет никакого эффекта, поэтому вам нужно будет сделать это после того, как вы снова отобразите форму, в противном случае значок будет на панели задач, но форма будет свернута.
this.Show();
this.WindowState = FormWindowState.Normal;