La bandeja de sistema (o system tray, o simplemente systray) es la zona de nuestro escritorio situada más a la derecha de la barra de tareas, y a la izquierda del reloj, que seguro que tenéis repleta de iconos de los programas que vais instalando.
Muchos programas tienen la opción de ser minimizados a la bandeja de sistema. Esto es en ocasiones muy práctico, por ejemplo, si el programa suele estar ejecutándose contínuamente mientras el ordenador está encendido pero no tenemos que mirarlo demasiado. De esta forma ahorramos espacio en la barra de tareas, espacio que puede ser utilizado por otros programas.
Ejemplos de programas que se minimizan a la bandeja del sistema son: clientes e mensajería (MSN, Google Talk…), clientes de FTP, Outlook, lectores de feeds, etc
Pues muy bien pero ¿cómo hago para que mi programa se pueda minimizar a la bandeja de sistema?
En C# .NET es muy sencillo de hacer con unos pocos pasos. Vamos a verlo a continuación creando un nuevo proyecto desde el principio.
- En primer lugar creamos un nuevo proyecto del tipo «Windows application«. Para probar, yo he añadido simplemente una etiqueta con el texto «Mi primer programa que se minimiza a la bandeja de sistema» al formulario que se crea por defecto.
- Ahora vamos a diseñar nuestro icono para la bandeja de sistema. Pulsamos con el boton derecho sobre el proyecto y después en «Add -> Add New Item…» y en la ventana emergente seleccionamos el tipo «Icon File«. Podéis crear el icono a vuestro gusto con el editor de Visual Studio .NET.
- A continuación, localizamos el elemento «notifyIcon» dentro del menú de herramientas y lo arrastramos hasta el formulario.
- En la ventana de diseño del formulario, en la parte inferior, debería aparecer el elemento que acabamos de añadir (debería llamarse «notifyIcon1«).
- Si pulsamos sobre él podemos acceder a sus propiedades. Vamos a cambiar el atributo «Visible» a «false» para que por defecto el icono no sea visible en la bandeja de sistema y después cambiamos el icono por el que acabamos de crear (o también podemos usar cualquier otro que tengamos).
- Una vez hecho esto pinchamos en el botón , que encontraremos en la misma ventana de propiedades, para desplegar la lista de eventos disponibles para el elemento «notifyIcon» y hacemos doble click en la acción «DoubleClick» para activar el evento.
- Visual Studio .NET habrá creado el método «notifyIcon1_DoubleClick» en el código de la clase que estamos manejando. Completaremos dicho método de la siguiente forma.
private void notifyIcon1_DoubleClick(object sender, System.EventArgs e) { //Hacemos visible el formulario this.Show(); this.WindowState = FormWindowState.Normal; //Ocultamos el icono de la bandeja de sistema notifyIcon1.Visible = false; }
- Ahora volvemos a la pantalla de diseño de formulario. Pinchamos sobre el formulario y después sobre el botón de la pantalla de propiedades para desplegar esta vez los eventos asociados al formulario. Esta vez hacemos click sobre la acción «Resize» y completamos el método que ha generado Visual Studio .NET de la siguiente forma:
private void Form1_Resize(object sender, System.EventArgs e) { //Si el estado actual de la ventana es "minimizado"... if(this.WindowState == FormWindowState.Minimized) { //Ocultamos el formulario this.Visible = false; //Hacemos visible el icono de la bandeja del sistema notifyIcon1.Visible = true; } }
- Por último, compilamos el proyecto y ejecutamos para ver el resultado.
Tal y como habréis imaginado, cuando pulsamos sobre el boton «minimizar» del formulario, nuestro programa desaparece de la pantalla y de la barra de tareas pero se hace visible su icono en la bandeja de sistema. En cambio, cuando hacemos doble click sobre este icono, la ventana vuelve a aparecer en pantalla y en la barra de tareas pero desaparece el icono del área de notificación.