Hay muchos casos en los cuales minimizar una aplicación a la barra tray es muy útil, generalmente para todas aquellas aplicaciones que corren de fondo (en background), como antivirus, firewalls, etc.

El framework de .NET pone a nuestra disposición un control "NotifyIcon", con el cual podemos minimizar nuestras aplicaciones Windows Form en la barra tray.

Veremos un ejemplo, donde escribiremos unas pocas líneas de código en C# para minimizar una aplicación en la barra tray y restaurarla al hacer doble clic sobre la misma.

  • Abrir un proyecto Windows Form existente, o crear uno nuevo.
  • De la barra de herramientas buscar el control NotifyIcon y draguearlo al formulario base

  • Setear la siguientes propiedades:
    • Name: nombre del control, en mi caso lo nombré como "trayIcon"
    • Text: texto con el nombre que queremos que aparezca al posicionar el mouse sobre el ícono de la tray.
    • Icon: ícono con el que queremos que aparezca la aplicación en la tray bar.
    • Visible: en falso, para que la aplicación, al arrancar no se vea en la tray, la haremos visible recién al momento de minimizarla.
  • Agregar un manejador de eventos al evento Resize del formulario con el siguiente código:

private void formBase_Resize(object sender, EventArgs e)
{
      if (FormWindowState.Minimized == WindowState)
      {
            Hide();
            trayBar.Visible = true;
      }
}

  • Agregar un manejador de eventos al NotifyIcon.DoubleClick con siguiente código:

private void trayBar_MouseDoubleClick(object sender, MouseEventArgs e)
{
      Show();
      WindowState = FormWindowState.Normal;
      trayBar.Visible = false;
}

En este punto, nuestra aplicación ya se minimizará en la barra tray (en vez de la barra de tareas) y no volverá a aparecer hasta hacer doble clic sobre el ícono de la System Tray.

Si además queremos agregar un menú contextual, estos son los pasos a seguir:

  • Draguear al formulario el control ContextMenuStrip.
  • Haciendo clic derecho sobre el control ContextMenuStripinsertado, seleccionar Edit Menu.
  • Agregar las opciones del menu contextual, por ejemplo, "Restaurar" y "Cerrar".
  • Escribir el código para los eventos clic de cada una de las opciones del menú contextual:
  • Finalmente, setear en el NotifyIcon la propiedad ContextMenuStip con el nuevo menu contextual recién creado.

private void toolStripMenuItemRestaurar_Click(object sender, EventArgs e)
{
      Show();
      WindowState = FormWindowState.Normal;
      trayBar.Visible = false;
}

private void toolStripMenuItemSalir_Click(object sender, EventArgs e)
{
      Application.Exit();
}

Vía: developer.com