Windows Forms boîte de Dialogue Modale qui renvoie un Objet plutôt que d'DialogResult
Je suis un peu coincé avec celui-ci, donc j'espère que quelqu'un pourrait m'aider.
Je suis en train de faire une application Winforms et j'ai besoin d'afficher une boîte de Dialogue Modale (formulaire.ShowDialog) qui retourne une valeur (demande à l'Utilisateur de certaines valeurs et les enveloppe dans un Objet).
Je ne peux pas voir comment faire cela plutôt que de donner une référence dans l'objet ou selon une certaine forme de Propriété publique de lire les données par la suite.
J'aimerais juste avoir ShowDialog retour quelque chose de différent, mais qui ne fonctionne pas.
Est thare certains "bonne" façon de le faire?
Je suis sûr que le problème n'est pas nouveau, mais depuis presque personne ne semble faire Winforms plus je ne peux pas trouver des conseils sur le web.
Vous devez vous connecter pour publier un commentaire.
Ajouter une méthode statique de votre formulaire, comme ceci:
Maintenant, vous pouvez appeler à partir de votre programme ainsi:
... et si ils annuler la boîte de dialogue, myObject sera nulle.
Maintenant, après avoir dit tout cela, je ne crois pas que l'ajout d'une propriété à votre classe du formulaire que vous pouvez ensuite lire à partir après l'appel de ShowDialog() est la meilleure approche.
Vous pouvez créer une propriété publique à l'intérieur de la boîte de Dialogue qui représente la valeur de retour:
Ou vous pouvez créer une nouvelle méthode ShowDialog à l'intérieur de votre formulaire de classe qui fait, fondamentalement, ce que Matt Hamilton n'. Peut-être même une méthode d'extension si c'est quelque chose de beaucoup de formes dans votre problème.
La propriété publique dans la boîte de dialogue formulaire de sens. Cependant, ne fermez pas la boîte de dialogue dans le bouton Ok cliquez sur gestionnaire d'événement. Lorsque vous affectez la propriété DialogResult la boîte de dialogue formulaire sera caché. Ensuite, dans le formulaire appelant, vous pouvez déterminer si Ok ou Annuler a été cliqué par l'examen de la DialogResult. Ensuite, vous pouvez accéder à la propriété publique si le Ok bouton a été cliqué, puis débarrassez-vous de la boîte de dialogue formulaire. Cela devrait être fait à l'aide d'un try-catch-finally bloc dans l'appel de la forme ou par le biais d'une instruction d'utilisation. Vous devez disposer de la boîte de dialogue modale afin d'éviter une fuite de mémoire.