Sí, la propiedad Visible es un gran problema en Windows Forms, eso es lo que realmente hace que se cree el identificador y hace que se ejecute OnLoad(). En otras palabras, la ventana no existe hasta que se vuelva visible. Ignorará los intentos de deshacer esto.
Es bastante común querer crear el identificador pero no hacer visible la ventana si usa NotifyIcon. Esto se puede conseguir por SetVisibleCore anulando:
protected override void SetVisibleCore(bool value) {
if (!this.IsHandleCreated) {
value = false;
CreateHandle();
}
base.SetVisibleCore(value);
}
Mira que OnLoad todavía no se ejecutará hasta que la ventana consigue realmente visible para mover el código en el constructor si es necesario. Simplemente llame a Show() en el controlador de eventos del menú contextual NotifyIcon para hacer que la ventana sea visible.
bien. pero, ¿qué hay de malo con lo visible? – Barun
this.Hide no funcionará dentro del evento _Load –