[WinForms - How To] Minimizar ventana en la bandeja del sistema

marzo 10, 2016 Christian Amado 0 Comentarios

El desarrollo en Formularios Windows está perdiendo un poco de terreno frente a otras prácticas para el desarrollo de aplicaciones, pero de todos modos es muy bueno poder tener en cuenta ciertas funciones para no perderlas de vista.

En este caso quiero mostrar como minimizar una aplicación a la bandeja de entrada y hacerla desaparecer de la barra de tareas.

Para tener en cuenta, definamos ambos términos:
Primero, debemos ocultar el formulario desde la ventana de Propiedades mediante la propiedad ShowTaskbar: systemtray1

Agregamos un control NotifyIcon al formulario en cuestión: systemtray3

Agregamos el evento Resize del formulario que permitirá verificar la acción actual de la ventana (minimizado o maximizado):
private void Form1_Resize(object sender, EventArgs e)
{
    //Verificamos el estado de la venta
    if (FormWindowState.Minimized == this.WindowState)
    {
        // Si está minimizándose mostramos la notificación
        this.notifyIcon1.Visible = true;
        this.notifyIcon1.ShowBalloonTip(500);
    }
    else
    {
        // Si no se está minimizando escondemos a notificación
        this.notifyIcon1.Visible = false;
    }
}

En el evento DoubleClick del control NotifyIcon agregamos la opción de colocar la ventana en vista normal:
private void notifyIcon1_DoubleClick(object sender, EventArgs e)
{
    // Al hacer doble clic en el icono de la bandeja mostramos la ventana normalmente
    this.WindowState = FormWindowState.Normal;
}

Con todos estos pasos logramos nuestro objetivo de ocultar la ventana y mostrar un ícono en la bandeja del sistema.