Tengo esta aplicación de Windows Forms donde se encuentra en el área de notificación. Al hacer clic en el ícono se lo muestra en primer plano, al hacer clic de nuevo (o al hacer clic en el icono de la aplicación X) lo envía de vuelta. Este es el tipo de aplicación que tiene la ventana siempre en la parte superior es importante cuando se muestra haciendo clic en el icono (aunque es opcional).Error muy molesto con la propiedad TopMost en Windows Forms
Al hacer clic con el botón derecho en el icono, aparece un menú contextual donde se puede seleccionar habilitar la opción "siempre en la parte superior" o no. Cuando la aplicación se inicia por primera vez, la configuración de la aplicación se lee desde un archivo XML y estoy 99% de que esto está funcionando como debería, la propiedad TopMost
está correctamente leída (y escrita).
Después de un tiempo (minutos, horas, días, lo que sea, normalmente hiberno y rara vez se apaga) el TopMost
deja de funcionar. No cambio la opción, no creo que nada cambie el valor de la opción, pero hago clic en el ícono del área de notificación y la aplicación no aparece en primer plano. Se muestra pero está en el fondo (se muestra en Alt + Tab), no está "siempre en la parte superior" como debería. Levanto el menú contextual, deshabilito la opción (porque está habilitada) y la habilito de nuevo, y luego comienza a funcionar. La aplicación ahora está "siempre en la cima". Sin embargo, puede perder esta habilidad en cualquier momento después de un tiempo.
No puedo entender por qué sucede esto y cómo sucede esto. ¿Alguien tiene alguna idea de por qué? Si no, ¿alguna idea de cómo podría intentar depurar tal comportamiento?
EDIT:
he añadido un trozo de código para mostrar un cuadro de mensaje cuando la propiedad TopMost
fue cambiado a ver si podía cuenta de cualquier comportamiento extraño, pero no era bueno. No ayudó porque el formulario estaba con TopMost = true
pero todavía estaba en el fondo ...
Sé que mi aplicación no es la única ventana superior, pero cosas como Windows Explorer, Firefox y otras cosas NO son de primer nivel y mi ventana debería estar encima de ellas. Lo cual no está sucediendo debido a este problema. Desactivo y vuelvo a habilitar la opción y se pone encima de ellos como debería. –
Y no creo que hibernar sea el problema. Acabo de hacer una prueba rápida e hiberne la máquina con Explorer y Firefox abiertos. Después de restaurarlo, mi aplicación sigue siendo superior.Debe suceder en una situación diferente ... –
¿Has probado la solución alternativa que sugerí? (después de mostrar la ventana, restablecer y configurar la propiedad "más alta") – peterchen