¿Cómo garantizar que un NotifyIcon desaparezca?
-
03-07-2019 - |
Pregunta
Estoy usando un control NotifyIcon en uno de mis formularios secundarios (modal) y está funcionando bien. Mostrar las puntas de los globos como se esperaba, manejar los eventos del mouse, etc. Sin embargo, no desaparece cuando lo esperaría. Específicamente, cuando salgo del formulario secundario y el padre vuelve a tener el control, el icono aún permanece. Su información sobre herramientas es accesible, por lo que está muy "viva". como si fuera.
Cuando salgo de mi aplicación como un todo, la imagen aún permanece hasta el punto en que coloco el cursor sobre ella. Una vez que pasa el mouse, desaparece.
¿Cómo puedo hacer que se comporte normalmente? Ok, normalmente es una mala palabra: -0 ¿Cómo puedo hacer que desaparezca cuando desaparece el formulario que lo creó?
¿Podría alguien explicar qué está causando esto también, pensé que se suponía que .net debía limpiar después de sí mismo?
G
EDIT: Si llamo al método Dispose en el formulario cerrado, esto funciona, pero ¿realmente tengo que hacer esto? G
Solución
Aquí hay un pensamiento, no estoy seguro de si esto hará la diferencia, pero ¿está llamando a Dispose () en NotifyIcon cuando se cierra el formulario secundario?
EDITAR: Acabo de ver su edición, sí, no me sorprende que esto ayude, y sí, debería hacerlo. Debajo de las cubiertas, algo está utilizando algunos recursos no administrados, y debe liberarlo. En general, cualquier cosa en su aplicación que implemente IDisposable que esté utilizando, hágase un favor y deséchela.
Otros consejos
Icon.Visible = false
también funcionaría. De todos modos, se debe llamar a Dispose
para deshacerse del controlador de Windows.
Esto pregunta es similar.
Si está de acuerdo con que las nuevas instancias del programa limpien la bandeja del sistema en lugar de intentar garantizar la limpieza en cualquier tipo de apagado, el siguiente simula una limpieza de la bandeja de notificaciones. Utiliza una solución SendMessage que simula una limpieza del mouse del usuario que no implica la necesidad de mover el cursor del usuario.
Tenga en cuenta que en las máquinas con Windows 7, el nombre Área de notificación
debe reemplazarse por Área de notificación promovida por el usuario
.