D'abord, je ne suppose que vous parlez d'une application d'hébergement de multiples formes, pas de multiples applications en cours d'exécution en même temps chaque hébergement le même type de forme: si je suis trompé, s'il vous plaît ignorer ce qui suit :)
Personnellement, j'utiliserais la stratégie que j'ai suggérée ici: Manage muliple windows forms in c# app
J'ai implémenté des solutions en utilisant cette approche où chaque fenêtre était une instance d'un modèle de formulaire, tous partageaient la possibilité de fermer l'application entière, et la communication entre les formulaires peut être géré par une seule classe statique à laquelle tous les formulaires ont une référence et qui sert de répartiteur de messages.
Par exemple: si chacun de vos formulaires a une zone de texte: que vous créez ce formulaire à partir du modèle ou autre chose, vous ajoutez une référence à une certaine sorte de structure de données de TextBox du formulaire dans la classe statique:
(peut-être
List<TextBox>
ou
Dictionary<TemplateForm, TextBox>
)
C'est juste une suggestion très large, et beaucoup de ce dont vous aurez besoin dépendra exactement de ce que vous voulez dire par le mot «communiquer». Vous pouvez faire des choses comme définir un événement personnalisé sur votre TemplateForm qui déclenche un événement auquel la classe Static Dispatcher souscrit: alors, quand le "Dispatcher" obtient cet événement, il peut "diffuser" à tous les autres formulaires, ou certains formulaires, etc. Encore une fois, ce sont de larges esquisses de ce que vous pouvez faire. De mon point de vue, cette approche vous donne un maximum de liberté au petit prix de vous obliger seulement à être sûr et à gérer l'événement Clôture du formulaire pour vous assurer que le dernier formulaire fermé ferme l'application.
Si une conception où «chaque forme est égale» convient à vos besoins pour votre application; Je ne sais pas: vous pouvez toujours utiliser cette approche en faisant un seul et même "formulaire maître", si vous le souhaitez, et en faisant uniquement ce formulaire capable de fermer l'application (vous n'avez donc pas à vous soucier de la possibilité fermeture laissant l'application "fonctionnant à vide."
J'ai fait une application pour un ami en utilisant cette approche où il y avait un" maître "qui avait essentiellement quatre" vues ": écran de démarrage, dialogue de configuration, écran d'état montrant l'état actuel de l'application et qui TemplateForm était « connecté » à laquelle d'autres TemplateForm (s), et, enfin, un écran « qui est tous les gens » :)
mieux,
Comment comptez-vous faire pour les 2 formes communiquer avec eachother? – James