Bonjour à tous,
J'ai un sérieux problème de gestion de splash screen. Je m'explique :
J'ai une application App qui lance un splash screen, qui n'est autre qu'une form. Je clos le splashScreen dans le App.Shown (et pas dans le constructeur ou au bout de x millisecondes, car je veux être certain que tout est prêt avant de clore le splash).
Ce splash screen à les propriétés suivantes :
(Je tiens au TopMost)
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9 SplashScreen.TopMost = true; SplashScreen.ShowInTaskbar = false; SplashScreen.StartPosition = FormStartPosition.CenterScreen; SplashScreen.MaximizeBox = false; SplashScreen.MinimizeBox = false; SplashScreen.Opacity = 1; SplashScreen.Show();
Le problème c'est que lors de l'initialisation de App, il se peut que des boîtes de dialog Message box (modales) apparaissent pour prévenir l'utilisateur qu'un problème est survenu, alors que le splashScreen est toujours visible.
Vous aurez deviné, le splashScreen étant à TopMost = true, et le MessageBox étant modal, je me retrouve coincé, puisque ce dernier attend d'être validé, mais est caché par le splashScreen : App est donc bloqué.
J'ai essayé plusieurs choses dont :
- Intercepter l'event "click" sur le splash screen et le fermer, mais le MessageBox prend le focus, et même si c'est le splashScreen qui est visible, "Click" n'est jamais intercepté.
- Essayer de traiter le splashScreen dans un thread à part, sans succès
- Jouer avec l'event "LostFocus" du splashScreen, échec aussi.
Si quelqu'un à une idée, je suis prêt à revoir complètement la façon de faire ce splash, les conditions étants :
- TopMost
- Disparait dans le App.Shown
- Ne bloque pas l'application si un MessagBox modal apparait
Merci de votre aide.
Partager