Comment masquer une boîte de dialogue modale sans retour .ShowDialog?
J'ai une application dans vb.net qui commence avec une sous-fonction de faire certaines choses et de décider s'il se montre ou pas. Quand il montre lui-même, il le fait en invoquant dialog.ShowDialog()
.
Quand dialog.ShowDialog()
retourne, l'application fait un peu de nettoyage et se termine.
J'aimerais trouver un moyen de masquer temporairement la boîte de dialogue (de l'envoyer à la barre d'état système) sans retour de la ShowDialog() fonction. Cependant, dès que je fais un me.Hide()
dans le code du formulaire, le formulaire est effectivement cachée, mais ShowDialog() renvoie et le processus est fermé.
Je comprends que c'est le comportement attendu. Donc ma question est comment puis-je obtenir cet effet? C'est le lancement d'un dialogue, qui peuvent être cachés, et de bloquer jusqu'à ce que l'utilisateur veut vraiment quitter l'application.
OriginalL'auteur Mathieu Pagé | 2010-03-11
Vous devez vous connecter pour publier un commentaire.
Vous ne pouvez pas faire ce travail, ShowDialog() retournera toujours lorsque le formulaire est caché. L'astuce consiste à utiliser une forme régulière et normale appel à Candidature.Run (), mais pour l'empêcher de devenir visible immédiatement. Collez ce code dans votre formulaire de classe:
Méfiez-vous que votre Charge de gestionnaire d'événement ne fonctionnera pas jusqu'à ce que la forme devient réellement visible, alors assurez-vous de faire tout d'initialisation dans le constructeur Sub New.
OriginalL'auteur Hans Passant
Si vous masquer la boîte de dialogue, vous sera retour de ShowDialog(). Oublier d'essayer de changer cela, vous ne pouvez pas.
Vous pourriez être en mesure de minimiser la boîte de dialogue.
Ou vous pouvez la placer hors de l'écran.
Ou vous pouvez le rendre transparent Modification de l'opacité de la fenêtre à partir de C#
OriginalL'auteur John Knoeller
Une autre solution est de changer le modèle de la fiche de la propriété Opacité à 0 pour le rendre totalement transparent.
OriginalL'auteur SuperLucky
vous pouvez utiliser un drapeau.
bool done = false;
vérifier drapeau en appelant la fonction (c'est fait ?)
OriginalL'auteur user694238