Browsing articles tagged with " Barra de tareas"

A vueltas con .NET: Minimizar formulario en la barra de tareas

Desde hace algún algo más de un mes estoy aprendiendo a programar con en .Net con Visual Basic 2008. Lo estoy haciendo totalmente auto-didacta así que hasta dentro de un tiempo no habrá gran cosa… Se me ha ocurrido colgar todas las dudas que me asalten y encuentre su solución en “El Interné”, por si a alguien le puede servir de ayuda.

El caso de hoy trata de minimizar nuestro formulario y colocarlo en la barra de tareas de Windows (System Tray), no es gran cosa pero es un comienzo, no? :)

Lo que debemos hacer es añadir un NotifyIcon a nuestro formulario y, si queremos que quede más bonito, añadirle un ContextMenu. La finalidad de éste control es crear un menú cuando hagamos click encima del NotifyIcon. Añadimos el siguiente codigo al evente de cerrar del formulario que queremos ocultar.


'En lugar de cerrar el programa lo vamos esconder y mostrar el icono del IconTray

Private Sub frmPortal_FormClosing(ByVal sender As System.Object, ByVal e As System.Windows.Forms.FormClosingEventArgs) Handles MyBase.FormClosing

'Primero lo minimizamos

Me.WindowState = FormWindowState.Minimized

Me.ShowInTaskbar = True

'Ahora lo hacemos invisible y cancelamos el evento de cerrar

Me.Visible = False

e.Cancel = True

End Sub

Hasta ahora lo que hemos echo es esconder el formulario pero todavia no veremos ningún icono en la barra de tareas.

En mi caso no voy a usar un ContextMenu,lo que me interesa es que cuando se haga click encima del NotifyIcon el formulario vuelva a aparecer.


'Hacer click en el icono significa volver a abrir la aplicacion

Private Sub NotifyIcon_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles NotifyIcon.Click

'Primero lo maximizamos

Me.WindowState = FormWindowState.Maximized

'Refrescamos los controles del formulario, sólo por nitidez.

Me.Refresh()

'Lo volvemos a hacer visible

Me.Visible = True

Me.BringToFront()

End Sub

Llegados a este punto me encontré con un problema, si tenía mas ventanas abiertas el formulario aparecía detrás de todas ellas. Teniendo en cuenta que es un aplicación que me interesa que esté siempre delante del todo utilizé la propiedad TopMost del formulario.