Comment continuer à exécuter du code après avoir appelé ShowDialog ()
la Forme.ShowDialog (), méthode provoque le code pour être arrêtée jusqu'à ce que le nouveau formulaire est fermé. J'ai besoin du code pour continuer à courir après le ShowDialog() la méthode est appelée. J'ai googlé et lu sur l'utilisation de backgroundworker? Mais c'est la première fois que j'ai entendu parler de ça et n'a jamais été utilisé avant.
Form2 form2this = new Form2();
form2this.ShowDialog();
MessageBox.Show("Something");
Ce code est exécuté après avoir cliqué sur un bouton, comment puis-je encore appeler ShowDialog pour empêcher l'utilisateur d'interagir avec le formulaire principal, mais toujours la principale forme de poursuivre ses travaux?
Désolé si sa été discutées, mais tout ce que j'ai trouvé semble extrêmement difficile d'effectuer une telle tâche simple. Je suis d'ailleurs surpris que ses pas inclus dans la méthode SHowDialog. par exemple ShowDialog().Continuer serait cool.
source d'informationauteur Seth
Vous devez vous connecter pour publier un commentaire.
Si vous voulez juste le code pour continuer sur la place du blocage jusqu'à ce que le pop-up est fermé envisager d'utiliser
Show
au lieu deShowDialog
.Si vous avez un peu d'action que vous voulez avoir le formulaire parent pendant que l'enfant est en place, alors oui, il pourrait être approprié d'utiliser un BackgroundWorker (ou juste de la lancer manuellement un nouveau sujet/Tâche). Il serait utile d'en savoir plus sur ce que la tâche est bien. Si vous avez besoin d'interagir avec le formulaire principal, ou l'enfant à la forme, alors que semble que de mal pour moi; si vous avez juste besoin de faire quelques tâches d'arrière-plan sans interaction de l'INTERFACE utilisateur, alors c'est la droite ligne de la pensée.
Une autre possibilité est que ce que vous voulez faire vraiment devrait juste être quelque chose à l'enfant, plutôt que le formulaire parent.
Tant que vous ne les opérations asynchrones pendant le temps que la boîte de dialogue modale est ouvert, vous pouvez le faire aussi simplement comme illustré ci-dessous, en supposant que button1_Click() est le gestionnaire d'événement pour un bouton.
J'ai constaté que lorsque j'ai utilisé la solution qui m'a suggéré d'utiliser Show(), j'ai pu retrouver dans les cas où la boîte de dialogue je voulais être modale finirait derrière le formulaire principal, après des allers-retours entre les applications. Qui n'arrive jamais quand j'utilise la solution ci-dessus.
Est-il une raison pourquoi vous ne pouvez pas avoir ce code dans le cadre de la Form2 classe? Ou utiliser un dialogue non modale? Vous pourriez utiliser un arrière-plan travailleur ou même quelque chose de simple comme un chronomètre, mais semble exagéré?
Exécuter un appel asynchrone de montrer modal. Voici un exemple dans le wpf:
C'est ma voie, si laid, mais je n'ai pas de meilleure idée.
De poursuivre l'exécution de code sans fermer la boîte de dialogue modale WindowsFormsSynchronizationContext.Actuel.Post(-=> {"Votre code"}, null); peut être utilisé. Ici vous pouvez trouver plus de détails -
http://newapputil.blogspot.in/2015/05/continue-executing-code-after-calling.html
Je suppose que la prochaine solution pour async
ShowDialog
:Et dans le formulaire principal, vous devez utiliser ce code: