2016-11-21 4 views
0

Alors j'ai réfléchi.Bonne façon de transmettre l'information

Lorsque vous créez un formulaire et utilisez applicaton.run (form1). Et à l'intérieur de cette forme1, vous ouvrez un autre formulaire2 et masquez form1. Dans form2 vous ouvrez un autre formulaire3 et masquer le formulaire 2. Mais dans form3 vous voulez utiliser les informations (variables) fournies dans form1 qui n'est pas? Accessible? Corrige moi si je me trompe.

J'ai pensé à plusieurs façons, mais je ne pense pas qu'ils sont la bonne façon.

  1. Enregistrer les informations de form1 dans une classe statique.

  2. Créer toutes les formes des objets dans la classe principale et à proximité/les exécuter 1 par 1.

  3. Passez l'info (variables) de form1 à form2 à Form3.

Quelle est la bonne façon de procéder?

Je suis désolé si c'est difficile à suivre.

Répondre

0

Cela dépend. Si ce sont des formulaires de dialogue affichés comme modaux et qu'il n'y a qu'une ou deux variables, il est souvent bon de stocker les valeurs en tant que propriétés dans la classe pour ce formulaire et de l'examiner de la même manière qu'avec DialogResult sur un formulaire MessageBox standard.

Si c'est plus compliqué ou si les formulaires restent ouverts, vous voudrez créer un objet et le transmettre aux formulaires. N'oubliez pas que les objets sont transmis par référence, donc si vous créez une classe appelée MyDataContainer, puis créez une instance dans le formulaire principal, puis passez cette instance aux autres formulaires, il s'agit de la même instance dans chacun de ces formulaires. Donc, si form3 met à jour cette instance, les autres formulaires pourront également voir ces changements. Ps: évitez le chemin statique, il y a très rarement un cas d'utilisation valide pour cela.

+0

Oui, compris. J'hésite toujours sur la façon dont je devrais choisir. Cela rend les choses un peu plus faciles. –

0

Il n'y a vraiment aucun moyen "correct" de le faire. Toutes les façons dont vous avez parlé pourraient fonctionner. Une façon supplémentaire serait de maintenir une liste statique de tous les formulaires. De cette façon, n'importe quel formulaire pourrait localiser n'importe quel autre formulaire en cherchant la liste pour cela. Plus spécifiquement, un Dictionary<string,Form> où string est un identifiant unique pour le formulaire, pourrait s'avérer utile.

Cela dit, tout se résume à vos objectifs de conception. Typiquement, il est préférable d'opter pour la solution la plus simple qui réalise vos objectifs de conception.

+0

Merci, ça me soulage un peu! Je vais utiliser la solution la plus simple qui réalise mes objectifs de conception. –

+0

@tuyen. Heureux d'avoir pu aider. Un upvote serait apprécié. –

+0

Aimerait, mais je n'ai pas assez de représentant pour le montrer publiquement. Il dit que c'est enregistré. –