Cómo iconizar una aplicación C# en el área de notificación de Windows

Publicado: 18 de febrero de 2015 en Actualidad

Icon.

Cómo iconizar una aplicación C# en el área de notificación de Windows

Explicaremos en este tutorial cómo ocultar una aplicación, desarrollada en C# (C Sharp) .Net, en el área de notificación de Windows, utilizando el componente no visual NotityIcon. Dicha aplicación quedará iniciada pero no se mostrará en la barra de tareas, en su lugar se mostrará un icono en el área de notificación de Windows:

Cómo iconizar una aplicación C# en el área de notificación de Windows

Para conseguir este efecto seguiremos los siguientes pasos. En primer lugar añadiremos a nuestra aplicación el componente NotifyIcon del Cuadro de herramientas (en el grupo "Controles comunes"):

Cómo iconizar una aplicación C# en el área de notificación de Windows

Antes de configurar el componente NotifyIcon añadiremos un segundo componente MenuStrip que nos permitirá mostrar un menú emergente al pulsar con el botón derecho del ratón sobre el icono del área de notificación para poder interacturar con la aplicación (volver a mostrarla, cerrarla y ejecutar cualquier tarea). Para ello accederemos al "Cuadro de herramientas" y pulsaremos sobre "MenuStrip" del grupo "Menús y barras de herramientas":

Cómo iconizar una aplicación C# en el área de notificación de Windows

Seleccionaremos el componente MenuStrip añadido y estableceremos su propiedad "Name" a "mnuContextual":

Cómo iconizar una aplicación C# en el área de notificación de Windows

Pulsaremos con el botón derecho del ratón sobre el MenuStrip llamado ahora mnuContextual y seleccionaremos "Editar elementos":

Cómo iconizar una aplicación C# en el área de notificación de Windows

Desde aquí añadiremos todos los elementos del menú que queramos para nuestra aplicación. Los típicos para el caso de la aplicación oculta en el área de notificación son, al menos, "Mostrar" y "Cerrar", de forma que al iconizar la aplicación siempre podamos volver a mostrarla. Para añadir estos elementos seleccionaremos el tipo "MenuItem" y pulsaremos "Agregar":

Cómo iconizar una aplicación C# en el área de notificación de Windows

En la propiedad "Name" de cada elemento de menú que añadamos estableceremos su valor adecuado para luego poder identificarlo. Por ejemplo para el menú "Mostrar aplicación" en la propiedad "Name" estableceremos "mnuMostrarAplicacion" y en la propiedad "Text" estableceremos el texto que se mostrará al usuario, por ejemplo "Abrir":

Cómo iconizar una aplicación C# en el área de notificación de Windows

De esta forma añadiremos todos los elementos del menú emergente que queramos que se muestren al pulsar con el botón derecho del ratón sobre el icono de nuestra aplicación:

Cómo iconizar una aplicación C# en el área de notificación de Windows

Ahora estableceremos el código C# para cada elemento de menú, para ello pulsaremos sobre el MenuStrip añadido mnuContextual, en la parte superior el asistente nos mostrará el menú contextual, haremos doble clic con el ratón sobre cada elemento del menú para añadir el código en su evento Click:

Cómo iconizar una aplicación C# en el área de notificación de Windows

Para el caso del elemento "Abrir" que será el que muestre la aplicación oculta en el área de notificación, añadiremos el siguiente código C#:

Cómo iconizar una aplicación C# en el área de notificación de Windows

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

Básicamente el código C# anterior muestra la aplicación para que vuelva a aparecer en la barra de tareas, establece el valor WindowsState del formulario a "Normal", activa el formulario y oculta el icono del área de notificación.

De la misma forma añadiremos el código para el resto de elementos de menú, por ejemplo si hemos añadido la opción de cerrar la aplicación en el elemento de menú "Cerrar" el código podría ser:

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

Una vez creado el menú emergente continuaremos configurando el componente NotifyIcon, para ello pulsaremos sobre él (aparece en la parte inferior del diseñador) y estableceremos las siguientes propiedades:

  • Name: nombre identificativo del componente, por ejemplo iconizarApp.
  • ContextMenuStrip: seleccionaremos el menú contextual añadido anteriormente mnuContextual.
  • Icon: podremos añadir un icono que será el que se muestre en el área de notificación o bien podremos establecer por código C# en tiempo de ejecución el icono de nuestra aplicación (así lo haremos más adelante).
  • Visible: estableceremos esta propiedad a "False" pues no queremos que se muestre el icono una vez ejecutada la aplicación si no cuando el usuario pulse un botón "Minimizar" o bien cuando minimice la aplicación.

Todas las propiedades anteriores se pueden establecer por código y así lo haremos como ejemplo:

Cómo iconizar una aplicación C# en el área de notificación de Windows

Si queremos que al pulsar doble clic con el ratón sobre el icono de nuestra aplicación, en el área de notificación de Windows, se vuelva a mostrar (por ejemplo), deberemos acceder a los eventos del componente "NotifyIcon" seleccionándolo y pulsando en el icono "Eventos" de la ventana de "Propiedades":

Cómo iconizar una aplicación C# en el área de notificación de Windows

En el desplegable del evento DoubleClick seleccionaremos el evento Click del elemento del menú que queramos que se ejecute, en nuestro caso mnuMostrarAplicacion_Click:

Cómo iconizar una aplicación C# en el área de notificación de Windows

Nota: si queremos generar código C# independiente para el evento DoubleClick del NotifyIcon haremos doble clic sobre dicho evento y nos mostrará la ventana de código desde donde podremos generar el código fuente que queramos para este evento.

Una vez configurado el componente "NotifyIcon" añadiremos un botón "Minimizar" a nuestra aplicación (o cualquier otro componente como un menú o desde un evento). Cuando el usuario pulse sobre dicho botón la aplicación desaparecerá de la barra de tareas, también desaparecerá del escritorio y se mostrará un icono el el área de notificación. Para conseguir esto, en el evento "Click" del Button:

Cómo iconizar una aplicación C# en el área de notificación de Windows

Añadiremos el siguiente código:

Cómo iconizar una aplicación C# en el área de notificación de Windows

 private void btMinimizar_Click(object sender, EventArgs e) { iconizarApp.Icon = this.Icon; iconizarApp.ContextMenuStrip = this.mnuContextual; iconizarApp.Text = Application.ProductName; iconizarApp.Visible = true; this.Visible = false; }

El código C# anterior asigna el icono del formulario al NotifyIcon para que éste aparezca en el área de notificación, asigna en tiempo de ejecución el menú contextual "mnuContextual" al NotifyIcon (no hace falta hacer esto si lo hemos asignado en el componente gráfico en tiempo de diseño), asigna como texto del NotifyIcon el nombre de la aplicación (texto que se mostrará al pasar el ratón por encima del icono), muestra el icono en el área de notificación y oculta la aplicación del escritorio y de la barra de tareas.

Si además queremos que cuando el usuario minimice el formulario nuestra aplicación se oculte en el área de notificación, en el evento "Resize" del formulario:

Cómo iconizar una aplicación C# en el área de notificación de Windows

Añadiremos el siguiente código C#:

Cómo iconizar una aplicación C# en el área de notificación de Windows

 private void formTwitter_Resize(object sender, EventArgs e) { if (this.WindowState == FormWindowState.Minimized) { btMinimizar_Click(sender, e); iconizarApp.BalloonTipIcon = ToolTipIcon.Info; iconizarApp.BalloonTipTitle = Application.ProductName; iconizarApp.BalloonTipText = "La aplicación ha quedado ocultada " + "en el área de notificación. Para mostrarla haga " + "doble clic sobre el icono"; iconizarApp.ShowBalloonTip(8); } }

En el código anterior sería suficiente con "btMinimizar_Click(sender, e);" para llamar al procedimiento que oculta nuestra aplicación y muestra el icono en el área de notificación. Pero hemos aprovechado este ejemplo para indicar cómo mostrar un globo informativo en el área de notificación. Indicamos cada línea comentada:

 //Tipo de icono a mostrar el el globo informativo (Info, Error, None, Warning) iconizarApp.BalloonTipIcon = ToolTipIcon.Info; //Título del balón informativo (el nombre de la aplicación) iconizarApp.BalloonTipTitle = Application.ProductName; //Texto del balón informativo iconizarApp.BalloonTipText = "La aplicación ha quedado ocultada " + "en el área de notificación. Para mostrarla haga " + "doble clic sobre el icono"; //Tiempo que aparecerá hasta ocultarse automáticamente iconizarApp.ShowBalloonTip(8);

Si además queremos realizar alguna acción cuando el usuario hace clic con el ratón sobre el globo informativo, añadiremos el código C# que queramos al evento BallonTipClicked del componente NotifyIcon (iconizarApp):

Cómo iconizar una aplicación C# en el área de notificación de Windows

Por ejemplo, si el usuario pulsa sobre el globo informativo la aplicación se mostrará, para ello añadiremos el siguiente código:

Cómo iconizar una aplicación C# en el área de notificación de Windows

 private void iconizarApp_BalloonTipClicked(object sender, EventArgs e) { mnuMostrarAplicacion_Click(sender, e); }

Ya podremos probar la aplicación, al pulsar el icono "Minimizar" aparecerá el icono de nuestra aplicación en el área de notificación y desaparecerá nuestra aplicación del escritorio y de la barra de tareas:

Cómo iconizar una aplicación C# en el área de notificación de Windows

Al pulsar con el botón derecho del ratón sobre el icono se mostrará el menú emergente:

Cómo iconizar una aplicación C# en el área de notificación de Windows

Y si minimizamos la aplicación:

Cómo iconizar una aplicación C# en el área de notificación de Windows

Nos mostrará el balón informativo y también se iconizará en el área de notificación:

Cómo iconizar una aplicación C# en el área de notificación de Windows

Anuncios

Responder

Introduce tus datos o haz clic en un icono para iniciar sesión:

Logo de WordPress.com

Estás comentando usando tu cuenta de WordPress.com. Cerrar sesión / Cambiar )

Imagen de Twitter

Estás comentando usando tu cuenta de Twitter. Cerrar sesión / Cambiar )

Foto de Facebook

Estás comentando usando tu cuenta de Facebook. Cerrar sesión / Cambiar )

Google+ photo

Estás comentando usando tu cuenta de Google+. Cerrar sesión / Cambiar )

Conectando a %s