NotifyIcon en barra de tareas en VB .NET

Mostrar globos de información en el área de notificación en VB .NET

El área de notificación (systray) es esa zona junto al reloj en la que aparecen iconos de notificación. Desde VB .NET es sencillo colocar en este sitio el icono de nuestra aplicación y utilizarlo para mostrar información. Por ejemplo, si tenemos un reproductor de archivos MP3 como el del artículo, podemos añadir esta funcionalidad para que al cambiar de canción se muestre un globo de diálogo con el título de la canción y el nombre del artista.

El control requerido se llama NotifyIcon y se puede agregar y configurar desde el cuadro de herramientas en Visual Studio o mediante código. Este control puede mostrar globos de texto de 2 formas diferentes:

  • NotifyIcon.Text existe desde hace más tiempo en Windows por lo que su aspecto es más sencillo y sólo admite 64 caracteres de texto. Configurando la propiedad NotifyIcon1.Visible como False o como True se oculta y muestra el globo, lo que sirve para actualizar la información mostrada que es leída cada vez que aparece el globo pero no es actualizada sobre la marcha mientras el globo permanece a la vista
  • BallonTip es más moderno, tiene mejor aspecto y admite 255 caracteres de texto, se utiliza la propiedad NotifyIcon1.BalloonTipText para definir el texto que se mostrará y el método NotifyIcon1.ShowBalloonTip para mostrarlo.

En el ejemplo referido del reproductor MP3 añadiríamos el control NotifyIcon al formulario y estas líneas de código cda vez que se inicia la reproducción de un archivo:

'ocultar y mostrar el control para actualizar la información
Me.NotifyIcon1.Visible = False 
Me.NotifyIcon1.Visible = True
'definir el texto, admite referencias a variables
Me.NotifyIcon1.BalloonTipText = strAutor + vbCrLf + strTitulo
'milisegundos que tardará en ocultarse el globo
Me.NotifyIcon1.ShowBalloonTip(10000)

ShowBalloonTip admite una sobrecarga que evita el uso de BalloonTipText:

Me.NotifyIcon1.ShowBalloonTip(10000, "Info...", strAutor + vbCrLf + strTitulo, ToolTipIcon.None)
'duración del globo en milisegundos, título, texto e icono

Respecto a la duración de estos globos de diálogo hay que tener en cuenta que están gobernados por la configuración interna del sistema operativo por lo que no siempre es fácil conseguir que duren el tiempo deseado. Windows suele tener configurados estos tiempos en 10″ (mínimo) y 30″ (máximo).

Si en vez de BallonTip usamos la propiedad Text básica el código sería como éste:

Me.NotifyIcon1.Text = strAutor + vbCrLf + strTitulo

Si preferimos mostrar el globo cuando el usuario hace clic en el icono del área de notificación recurrimos al evento MouseClick del control NotifyIcon:

Private Sub NotifyIcon1_Mouse(sender As Object, e As MouseEventArgs) Handles NotifyIcon1.MouseClick
        Me.NotifyIcon1.ShowBalloonTip(10000, "Info", strAutor + vbCrLf + strTitulo, ToolTipIcon.Info)
End Sub


El aspecto usando BallonTip es éste:

En cambio si usamos Text es así: