2010-06-25 11 views
5

J'ai une petite application qui crée des alertes chaque fois qu'une modification à une base de données est faite. J'ai quelques options dans le formulaire d'alerte qui apparaît.
L'une des options ouvre un autre formulaire (un formulaire enfant) demandant à l'utilisateur de plus amples informations.Fermer une forme d'une autre forme?

Lorsque le formulaire enfant obtient les informations nécessaires de l'utilisateur, je souhaite qu'il se ferme aussi bien que le formulaire parent. Jusqu'à présent, je ne sais comment fermer le formulaire enfant, mais pas le formulaire parent.

Parent form > Opens child form 
Child gathers information > User clicks ok in child > child closes, parent closes 

^c'est ce que je veux

Je n'ont pas le pouvoir du cerveau à réfléchir à la façon de communiquer à travers des formes pour accomplir la fermeture du formulaire parent.

Toute aide serait très apprécié. En fait, ce serait super apprécié. Si je pouvais apprendre à faire communiquer mes formes les unes avec les autres, je pourrais vraiment faire beaucoup de dégâts (dans le bon sens 8D).

Répondre

1

Essayez ce sous la forme mère:

using (var childForm = new ChildForm()) 
{ 
    if (childForm.ShowDialog() == DialogResult.OK) 
    { 
     Close(); 
    } 
} 

Votre formulaire enfant doit retourner une DialogResult cliquant sur des boutons (OK ou Annuler) et/ou définissant les propriétés AcceptButton et CancelButton dans le concepteur.

+0

Si le formulaire enfant va être de retour d'informations à la forme mère, je préfère avoir la classe de la forme de l'enfant définit une méthode statique qui crée une forme d'enfant, exécute ShowDialog sur elle, copie les informations appropriées dans un ensemble de données de retour objet, détruit le formulaire et renvoie les données. Dans un tel scénario, le constructeur de la forme enfant peut être protégé ou, si la classe ne sera pas héritable, privé. – supercat

+0

Je passe un objet métier dans le formulaire enfant et je le laisse modifier l'objet ou, plus généralement, j'expose les données en tant que propriété sur le formulaire enfant. –

6

Dans la forme de parent, vous pouvez faire quelque chose comme ceci:

ChildForm f = new ChildForm(); 
f.FormClosed += (o,e) => this.Close(); 
f.Show(); 
+0

@Justin, je reçois un délégué() ne peut pas prendre 0 erreur de paramètres ... – sooprise

+0

@BFree, votre solution a parfaitement fonctionné, merci beaucoup !!! : D – sooprise

+1

Cela ne permet pas à l'utilisateur d'annuler ce qu'il fait dans le formulaire enfant. –

Questions connexes