Beaucoup d'applications basées sur les documents prennent en charge plusieurs fenêtres, une par document ouvert, affichées dans la barre des tâches. La combinaison de touches ALT+TAB peut être utilisée pour basculer entre les documents, mais sans la charge mémoire provoquée en chargeant chaque document dans un processus séparé. Cet exemple implémente ce comportement.
La méthode Sub Main, située à l'intérieur d'une classe nommée FormsManager, constitue l'objet de démarrage de l'application. La méthode Main crée une nouvelle instance de formulaire en appelant la méthode NewForm de la classe FormsManager, puis ajoute le nouveau formulaire à un objet List. Une fois que le premier formulaire est créé, le code appelle Application..::.Run pour démarrer le principal thread de l'application afin que la fermeture du premier formulaire n'arrête pas le processus. Chaque formulaire de document expose un élément de menu Nouveau. Cliquer sur cet élément de menu appelle encore la méthode NewForm qui ouvre un nouveau formulaire de document tout comme Sub Main lors du chargement de l'application.
Chaque formulaire fournit également les éléments de menu Fermer et Quitter. Choisissez Fermer pour démarrer le processus de fermeture. Chaque formulaire a un événement Closing qui permet au code du formulaire de vérifier si le contenu du document a été modifié et, si tel est le cas, de demander à l'utilisateur s'il faut enregistrer ou non.
Si vous essayez de fermer un document modifié en fermant le formulaire ou en quittant l'application, une boîte de dialogue vous demandera d'enregistrer le contenu du formulaire. Si vous cliquez sur Oui, le code appelle la méthode Save du formulaire et ferme le formulaire. Si vous cliquez sur Non, le formulaire se ferme normalement. Si vous cliquez sur Annuler, le formulaire ne se ferme pas et un événement personnalisé est déclenché pour indiquer à l'application d'arrêter la fermeture. Cette application n'exécute pas réellement d'E/S de fichier pour enregistrer le fichier.