J'ai un formulaire principal (appelons-le frmHireQuote) qui est un enfant d'un formulaire MDI principal (frmMainMDI), qui montre un autre formulaire (frmImportContact) via ShowDialog () lorsqu'un bouton est cliqué.
Lorsque l'utilisateur clique sur «OK» sur frmImportContact, je souhaite renvoyer quelques variables de chaîne à certaines zones de texte sur frmHireQuote.
Notez qu'il pourrait y avoir plusieurs instances de frmHireQuote, il est évidemment important que je revienne à l'instance qui a appelé cette instance de frmImportContact.
Quelle est la meilleure méthode pour y parvenir?
la source
Je crée normalement une méthode statique sur formulaire / dialogue, que je peux appeler. Cela renvoie le succès (bouton OK) ou l'échec, ainsi que les valeurs à renseigner.
Et sur le formulaire:
Pour appeler votre formulaire;
la source
frm
can (et vient de le faire quand je l'ai lu) conduit à la confusion ...J'ai trouvé un autre petit problème avec ce code ... ou du moins c'était problématique quand j'ai essayé de l'implémenter.
Les boutons de frmMain ne renvoient pas de valeur compatible, en utilisant VS2010, j'ai ajouté ce qui suit et tout a commencé à fonctionner correctement.
Après avoir ajouté les deux valeurs de bouton, la boîte de dialogue a très bien fonctionné! Merci pour l'exemple, cela a vraiment aidé.
la source
Je viens de mettre quelque chose dans le constructeur par référence, afin que le sous-formulaire puisse changer sa valeur et que le formulaire principal puisse obtenir un objet nouveau ou modifié à partir du sous-formulaire.
la source
J'utilise beaucoup MDI, je l'aime beaucoup plus (où il peut être utilisé) que plusieurs formulaires flottants.
Mais pour en tirer le meilleur parti, vous devez vous familiariser avec vos propres événements. Cela vous rend la vie tellement plus facile.
Un exemple squelettique.
Ayez vos propres types d'interruptions,
Ensuite, votre propre type Args
Ensuite, utilisez le délégué dans votre espace de noms, mais en dehors d'une classe
Maintenant, manuellement ou à l'aide de l'interface graphique, demandez au MDIparent de répondre aux événements des formulaires enfants.
Mais avec votre owr Args, vous pouvez réduire cela à une seule fonction. et vous pouvez avoir la possibilité d'interrompre les interruptions, bon pour le débogage, mais peut être utile à d'autres égards.
Faites simplement pointer tous vos codes d'événement mdiparent vers une fonction,
Un simple mécanisme de commutation suffit généralement pour transmettre les événements aux formulaires appropriés.
la source
Si vous voulez passer des données à
form2
deform1
sans passer comme neufform(sting "data");
Faites comme ça sous la forme 1
sous forme 2 ajouter
Vous pouvez également utiliser une valeur
form1
comme celle-ci si vous souhaitez échanger quelque chose dansform1
juste en forme1
la source
Vous devez d'abord définir l'attribut dans form2 (enfant), vous mettrez à jour cet attribut dans form2 et aussi à partir de form1 (parent):
Appel de form2 (enfant) depuis form1 (parent):
la source
Je lève un événement dans le formulaire définissant la valeur et je m'abonne à cet événement dans le (s) formulaire (s) qui doivent gérer le changement de valeur.
la source
les délégués sont la meilleure option pour envoyer des données d'un formulaire à un autre.
la source