Обычно вы делаете это только тогда, когда используете значок в трее или какой-либо другой метод для отображения формы позже, но это будет хорошо работать, даже если вы никогда не отображаете основную форму.
Создайте в своем классе bool значение по умолчанию false:
private bool allowshowdisplay = false;
Затем переопределите метод SetVisibleCore
protected override void SetVisibleCore(bool value)
{
base.SetVisibleCore(allowshowdisplay ? value : allowshowdisplay);
}
Поскольку Application.Run () устанавливает формы .Visible = true после загрузки формы, он будет перехватывать это значение и устанавливать значение false. В приведенном выше случае он всегда будет иметь значение false до тех пор, пока вы не включите его, установив для параметра allowhowdisplay значение true.
Теперь, когда форма не будет отображаться при запуске, теперь вам нужно снова включить SetVisibleCore для правильной работы, установив allowhowdisplay = true. Вы захотите сделать это в любой функции пользовательского интерфейса, которая отображает форму. В моем примере это событие левого клика в моем объекте notiyicon:
private void notifyIcon1_MouseClick(object sender, MouseEventArgs e)
{
if (e.Button == System.Windows.Forms.MouseButtons.Left)
{
this.allowshowdisplay = true;
this.Visible = !this.Visible;
}
}