Ho provato a farlo impostando Visible su false o hiding nel costruttore e nell'evento OnLoad.
Nessuno di questi ha avuto alcun effetto, poiché il modulo è impostato su Visibile dopo la creazione del modulo e dopo l'attivazione dell'evento OnLoad, in SetVisibleCore.
L'impostazione del modulo nascosto nell'evento Mostrato funziona, ma il modulo sfarfalla sullo schermo per un momento.
È anche possibile eseguire l'override di SetVisibleCore e impostare il valore su falso, ma OnLoad non viene attivato e alcuni degli altri eventi sono incasinati, come la chiusura del modulo.
La soluzione migliore a mio parere è impostare il modulo su Ridotto e non mostrato nella barra delle applicazioni prima di chiamare Application.Run().
Così, invece di:
Application.Run(new MainForm());
fare:
MainForm form = new MainForm();
form.WindowState = FormWindowState.Minimized;
form.ShowInTaskbar = false;
Application.Run(form);
Poi l'applicazione verrà eseguita con tutti gli eventi appropriati sparato (anche OnShown) e non verrà visualizzato il modulo.
Se si desidera essere in grado di nascondere/mostrare il modulo come normale dopo, è necessario impostare WindowState e ShowInTaskbar su Normal e true.
Nell'evento Mostrato, è possibile riportare ShownInTaskbar su true e nascondere correttamente il modulo.
this.Shown += new System.EventHandler(this.MainFormShown);
...
void MainFormShown(object sender, EventArgs e)
{
this.ShowInTaskbar = true;
this.Visible = false;
}
Impostazioni il WindowState di nuovo al normale, mentre la forma è nascosta non ha alcun effetto, quindi sarà necessario per farlo dopo si mostra ancora una volta la forma, altrimenti l'icona essere nella barra delle applicazioni ma il modulo verrà ridotto a icona.
this.Show();
this.WindowState = FormWindowState.Normal;
possibile duplicato del [this.Visible non funziona in Windows Form] (http: // StackOverflow. it/questions/3742709/forms-visible-is-not-working-in-windows) –