Tengo una aplicación que usa NotifyIcon en la bandeja para ocultar/restaurar la aplicación, así como avisos emergentes para el usuario de los eventos de la aplicación. Mi aplicación tiene una cola de notificaciones y utilizo el evento NotificationIcon.BalloonTipClosed para determinar cuándo restablecer el globo y mostrar la siguiente notificación (si hay una en la cola).¿Cómo puedo saber si una punta de Globo en la bandeja del sistema se ha cerrado?
Este método parece funcionar bien en las dos causas habituales (el usuario deja que el globo se cierre cuando se agota y el usuario hace clic en "X" en el globo para forzarlo), pero hay un tercer caso donde BalloonTipClosed doesn ' t ser llamado:
- globo de notificación aparece
- Si bien es visible, usuario hace clic en el icono de notificación para que aparezca el menú contextual, haciendo que el balón a desaparecer
el evento BalloonTipClosed doesn' t se activan en este instancia - me imagino que es un error en el marco (estoy usando 2.0), pero ¿alguien tiene una idea al respecto? Si no obtengo este evento, mi aplicación siempre piensa que hay un globo visible (tengo un booleano que impide que muestre varios globos a la vez), y nunca volverá a mostrar otro ícono, mientras esté en ejecución.
El problema con esto es que, mientras pueda capturar un evento icon_click, y sé que el globo ha cerrado en ese momento, No estoy seguro de cuándo mostrar el siguiente globo. Mostrarlo de inmediato sería sobre cualquier cosa que el usuario esté haciendo allí. Podría hacerlo en un retraso después del clic, y esto todavía implica un temporizador, así que prefiero usar el temporizador en todas las instancias. – SqlRyan
Buen punto. Asumiendo que lo único que el usuario puede 'hacer ahí abajo' es activar un menú contextual, si maneja los eventos de Apertura y Cerrado del menú y solo muestra el siguiente globo si el menú contextual no se está activando. Es posible que también desee tomar esa decisión según el elemento de menú que seleccione el usuario – Bob