Я попытался сделать это, установив Visible в false или скрываясь в конструкторе и в событии OnLoad.
Ни один из них не имел никакого эффекта, так как форма установлена на Видимый после создания формы и после того, как событие OnLoad запущено, в SetVisibleCore.
Установка формы для скрытия в событии Shown, но форма мгновенно мерцает на экране.
Вы также можете переопределить SetVisibleCore и установить значение false, но затем OnLoad не запускается, а некоторые из других событий перепутаны, например, закрытие формы.
Лучшим решением на мой взгляд является установка формы для минимизации и не показана на панели задач перед вызовом Application.Run().
Таким образом, вместо:
Application.Run(new MainForm());
сделать:
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 назад к нормальному в то время как форма скрыта не имеет никакого эффекта, так что вам нужно будет сделать это после того, как вы показать форму еще раз, в противном случае значок будет быть в панели задач, но форма будет минимизирована.
this.Show();
this.WindowState = FormWindowState.Normal;
возможный дубликат [this.Visible не работает в Windows Forms] (HTTP: // StackOverflow. com/questions/3742709/this-visible-is-not-working-in-windows-forms) –