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

¿Fue útil?

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 .

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top