Les meilleures pratiques pour le multi-forme d'applications pour afficher et masquer les formes?

Il ya des tonnes de questions sur StackOverflow demandant comment masquer Form1 et de montrer Form2. Et, généralement, quelques réponses différentes cultures:

1)

//Program.cs
Application.Run(new Form1());
//Form1.cs
Form2 form2 = new Form2();
form2.Show();
this.Hide();

2)

//Program.cs
Form1 form1 = new Form1();
Form2 form2 = new Form2();
form1.Show();
form2.Show();
Application.Run();

...etc..

Je ne suis pas à la recherche d'un simple jetable solution comme #1. Je suis à la recherche de la meilleure forme de pratiques de gestion. Une application avec 5-8 formes, de l'ouverture et de la fermeture d'un autre fréquemment - quelle est la meilleure façon de gérer ces formes?

Mon idée était de faire de chaque forme a (paresseux?) Singleton et de les enterrer dans un FormsManager classe quelconque (comme solution #2 mais ++). Et puis des formes pourrait appeler quelque chose comme FormsManager.GetForm<WelcomeDialog>().

Mais je me demandais ce que les gens avec plus d'expérience utilisé. Encore une fois, ces solutions ne devraient pas être rapide hacks. Ils devraient être orientée vers le design, peut-être architectural, et des solutions à long terme.

Modifications:

C'est plutôt une question générique (de sorte que les exigences sont assez ouvert) pour tous ceux qui pourraient avoir le même problème. Spécifique à ma situation si je n'ai pas besoin de multiples formes affiche au démarrage. Aussi, je n'ai pas de formulaires MDI. J'ai peut-être quelques formulaires modaux, mais ils sont pour la plupart non-modale.

Quelles sont les exigences? Vous voulez de multiples formes pour être montré au démarrage? Une fois l'application démarrée, qu'est-ce que le formulaire d'afficher/masquer la stratégie que vous souhaitez (formulaires modaux, de multiples formes, des formulaires MDI...)?
Donc, je n'ai pas besoin de multiples formes affiche au démarrage. Une fois que l'application est lancée, le formulaire d'afficher/masquer la stratégie est simplement de multiples formes (non-MDI). Il y a peut être un ou deux formulaires modaux.

OriginalL'auteur Jason | 2012-02-27