Intenté hacer esto estableciendo Visible en falso u ocultándome en el constructor y en el evento OnLoad.
Ninguno de estos tuvo ningún efecto, ya que el formulario se establece en Visible después de que se crea el formulario y después de que se desencadena el evento OnLoad, en SetVisibleCore.
Configurar el formulario oculto en el evento Mostrado funciona, pero el formulario parpadea en la pantalla por un momento.
También puede anular SetVisibleCore y establecer el valor en falso, pero luego OnLoad no se activa y algunos de los demás eventos se arruinan, como el cierre de formularios.
La mejor solución en mi opinión es establecer el formulario minimizado y no se muestra en la barra de tareas antes de llamar a Application.Run().
Así que en lugar de:
Application.Run(new MainForm());
hacer:
MainForm form = new MainForm();
form.WindowState = FormWindowState.Minimized;
form.ShowInTaskbar = false;
Application.Run(form);
A continuación, la aplicación se ejecutará con todos los eventos apropiados despedido (incluso OnShown) y no se mostrará el formulario.
Si desea poder ocultar/mostrar el formulario como normal después de eso, entonces debe volver a configurar WindowState y ShowInTaskbar en Normal y verdadero.
En el evento Mostrado, puede establecer ShownInTaskbar en verdadero y luego ocultar correctamente el formulario.
this.Shown += new System.EventHandler(this.MainFormShown);
...
void MainFormShown(object sender, EventArgs e)
{
this.ShowInTaskbar = true;
this.Visible = false;
}
Ajustes del WindowState de nuevo a normal, mientras que el formulario está oculto no tiene ningún efecto, por lo que tendrá que hacerlo después de mostrar el formulario de nuevo, de lo contrario el icono estar en la barra de tareas pero el formulario se minimizará.
this.Show();
this.WindowState = FormWindowState.Normal;
posible duplicado de [this.Visible no está funcionando en Windows Forms] (http: // stackoverflow. com/questions/3742709/this-visible-is-not-working-in-windows-forms) –