C'est un problème très semblable à This one, malheureusement que l'on n'a jamais répondu non plus.MessageBox ne montre pas sur la forme de MDI après un long calcul
J'ai un forum MDI principal qui héberge plusieurs formulaires enfants. L'un d'eux effectue un long calcul et déclenche une exception si une erreur survient (tout le travail est effectué sur le même thread). J'essaie alors d'informer l'utilisateur d'une erreur avec une boîte de message, mais elle n'apparaît pas (mais vole le focus de MDI Main, donc l'application ne répond pas du tout).
Le beheviour change légèrement si j'appelle Application.DoEvents() (je sais mal, mais c'est une dernière chose). Ensuite, les formulaires restent complètement actifs et la boîte de message n'apparaît qu'après avoir changé l'application active (Alt + Tab) en quelque chose d'autre, puis de nouveau à nouveau.
Que puis-je faire pour m'assurer que la boîte de message sera visible? J'ai déjà essayé de passer les deux, enfant actif et MDI principal en tant que paramètre à la méthode MessageBox.Show. Cela ne change pas le comportement.
Pour clarifier: la messagebox est une partie de la forme de l'enfant, mais à ce moment je suis prêt à le montrer d'une façon qui ne pause l'application. La boîte à message doit être modale, mais elle doit être visible afin qu'elle puisse être reconnue par l'utilisateur.
Avez-vous encore des problèmes avec cela? – ChrisBD
J'ai écrit un work-around qui utilise un autre thread pour afficher la boîte de message. Je ne pense toujours pas que cette question a une réponse et ma solution est une solution de contournement, donc je ne pense pas que je vais l'utiliser pour répondre à ma propre question. –