14 votes

trouver une instance de formulaire dans une autre classe

J'ai un formulaire principal avec une liste de données dans une listBox. Lorsque je clique sur le bouton, j'ouvre un nouveau formulaire pour créer un nouvel objet de données (le formulaire principal est inactif en arrière-plan). Lorsque les nouvelles données sont soumises, la listobox du formulaire principal doit être remplie avec ce nouvel objet.

Je pensais à ce qui suit :

  1. Lorsque le formulaire 2 est soumis, je pensais trouver l'instance MainForm et tuer cette instance. Après cela, il devrait être facile de charger à nouveau la liste de données de la base de données et de l'afficher dans la boîte de liste.

La question est :

Si un formulaire 1 est créé et qu'à la suite d'un événement un formulaire 2 est instancié avec showDialog, le formulaire 1 est inactif jusqu'à ce que les données soient soumises, comment retrouver l'instance du formulaire 1 avant la fermeture du formulaire 2 ?

Donc encore une fois, comment trouver une instance de la classe Form1 à partir de la classe Form2 ?

Merci

61voto

Jurgen Camilleri Points 2749

Vous pouvez obtenir une référence à l'un des formulaires actuellement ouverts de l'application en utilisant la fonction Application.OpenForms propriété. Forms dans ce FormCollection peuvent être accédés par index comme ceci :

var form1 = Application.OpenForms[0];

ou par le formulaire Name comme suit :

Form form1 = Application.OpenForms["Form1"];

J'espère que cela vous aidera.

-1voto

Winks Points 314

Si vous appelez

Form1.ShowDialog(this)

alors vous serez en mesure d'obtenir une référence au formulaire appelant avec

this.Owner.Name

dans le deuxième formulaire (Form2 dans votre cas)

voir http://msdn.microsoft.com/en-us/library/system.Windows.forms.form.showdialog.aspx

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X