2009-11-07 3 views
0

Je souhaite ouvrir une instance multiple d'un seul et la faire fonctionner simultanément, indépendamment l'une de l'autre.
est-il possible dans les applications de formulaire de Windows .net, si oui, comment puis-je l'obtenir..net c sharp Windows Formulaire Application: ouverture d'une instance multiple de la même forme

Fondamentalement, je veux faire une demande de chat en utilisant "**. Net windows Form **" qui aura ** fenêtre de chat ** à un **.

+1

Comment comptez-vous faire pour les 2 formes communiquer avec eachother? – James

Répondre

3

Oui, c'est certainement possible.

Form1 f1 = new Form1(); 
Form1 f2 = new Form1(); 
f1.Show(); 
f2.Show(); 

Forms dans le monde .NET sont des objets et vous pouvez les créer (autant que vous voulez) comme vous créer des instances de tout autre type.  

2
MyForm f1 = new MyForm(); 
f1.Show(); 

MyForm f2 = new MyForm(); 
f2.Show(); 

// etc. 
0

Assurez-vous, vous n'êtes pas montrer la forme comme moyen de dialogue

Form3 objForm = new Form3(); 
objForm.ShowDialog(); 

dans cet état, il attendra la fermeture sous forme puis exécutez la ligne suivante.

1

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,

Questions connexes