Demande de conseil pour mettre à jour form dynamiquement.

[Résolu]
Signaler
Messages postés
903
Date d'inscription
mercredi 23 février 2005
Statut
Membre
Dernière intervention
16 juin 2010
-
Messages postés
903
Date d'inscription
mercredi 23 février 2005
Statut
Membre
Dernière intervention
16 juin 2010
-
Bonjour à tous,,



En faite ma question est que j'ai, dans une form, un treeview et quand
j'appuis sur un menu j'ouvre une seconde form et cette seconde form
doit rajouter des items dans ce treeview. Comment faire que pour dans
la deuxieme form au moment ou j'ajoute un item ca rajoute directement
cet item dans le treeview de le premère Form ? passer le treeview en
paramètre ou y'a t'il des solutions plus élégantes ?



Voila si qq à déja été confronté à ce problème.



Par avance, merci.

6 réponses

Messages postés
4936
Date d'inscription
lundi 17 février 2003
Statut
Modérateur
Dernière intervention
14 février 2014
37
Personnellement, je procède différemment.
Pour moi, 2 formulaires ne doivent jamais avoir de référence de l'un vers l'autre (à part biensûr le ShowDialog).

Donc, tout se passe au niveau des propriétés du formulaire qui crée les nouveaux items de ton TreeView.

Exemple :

dans ton Form1, qui contient ton treeview, tu appelles le Form2, comportant l'interface qui te permet de créer de nouveaux items.

tu auras :
using (Form2 f = new Form2()) {
f.ShowDialog();
}

Mais tu ne récupères rien
Donc le code adapté sera :
using (Form2 f = new Form2()) {
if (DialogResult.OK == f.ShowDialog()) {
this.AjouteNouveauxNoeuds(f.NouveauxNoeuds);
}
}

et dans ton Form2, tu crées une propriété NouveauxNoeuds qui contiendra une collection de noeuds à ajouté à ton TreeView.


<HR>
Sébastien FERRAND

Blog : http://blogs.developpeur.org/sebmafate
Messages postés
4936
Date d'inscription
lundi 17 février 2003
Statut
Modérateur
Dernière intervention
14 février 2014
37
il faut que ton boulot valider ait pour propriété DialogResult la valeur OK.


<HR>
Sébastien FERRAND

Blog : http://blogs.developpeur.org/sebmafate
Messages postés
4936
Date d'inscription
lundi 17 février 2003
Statut
Modérateur
Dernière intervention
14 février 2014
37
en fait, c'est un des principes de la programmation objet.
une classe ne doit jamais modifier ce que contient une autre.

et puis... imagine demain tu changes le nom de ton treeview... il faudra que tu modifies le Form1 ET le Form2, alors que dans la méthode que je te propose, tu ne modifieras que le Form1.


<HR>
Sébastien FERRAND

Blog : http://blogs.developpeur.org/sebmafate
Messages postés
903
Date d'inscription
mercredi 23 février 2005
Statut
Membre
Dernière intervention
16 juin 2010
2
merci mais ca va se declencher quand ca : "if (DialogResult.OK ==
f.ShowDialog()) " étant donné que c une form, y' a un bouton valider et
fermer dans la form2 mais c'es tout.
Messages postés
903
Date d'inscription
mercredi 23 février 2005
Statut
Membre
Dernière intervention
16 juin 2010
2
Ah ok , en faite deux forumlaires ne doivent jamais avoir de references
pour toi c'est une question de principe ou ca fait des choes moins
clairs ?
Messages postés
903
Date d'inscription
mercredi 23 février 2005
Statut
Membre
Dernière intervention
16 juin 2010
2
ok et j'ai une dernière question si dans form2 ou moment j'appuis sur
valider j'ai une alerte du type "Vous devez remplir le champs nom" ; ca
va quand même produire :



if (DialogResult.OK == f.ShowDialog()) {

this.AjouteNouveauxNoeuds(f.NouveauxNoeuds);

}



parceque j'ai appuyez sur le le bonton valider dans ma form2 qui à
comme dialogresult : ok . ? mais il n'y pas d'operation de contrôle
pour savoir si le bouton valider à marcher ou pas dans la form1 ?