Recharger un Form

Résolu
altozinzin Messages postés 54 Date d'inscription vendredi 14 mai 2004 Statut Membre Dernière intervention 6 mai 2011 - 14 août 2010 à 15:31
altozinzin Messages postés 54 Date d'inscription vendredi 14 mai 2004 Statut Membre Dernière intervention 6 mai 2011 - 16 août 2010 à 13:45
Salut à tous!

J'ai un Form appelé acceuil.

Celui possède un panel dans lequel je charge un autre form appelé mdp grace à cette fonction:

            panel1.Controls.Clear();
            mdp mdpnew = new mdp();
            mdpnew.TopLevel = false;
            panel1.Controls.Add(mdpnew);
            mdpnew.Show();


Jusque là pas de problème.
Le problème vient du fait que dans le Form mdp je peux modifier certains paramètres du Form Accueil mais je n'arrive pas à 'rafraichir' le form Accueil.

J'ai essayé ceci:

Accueil acc = new Accueil();
this.Hide();
  acc.Show();


Logiquement un nouveau form accueil se charge mais le précédent reste en place puisque this.Hide() ferme simplement le panel.

Can you help me?

J'espère avoir été clair, merci d'avance.

5 réponses

cs_Robert33 Messages postés 834 Date d'inscription samedi 15 novembre 2008 Statut Membre Dernière intervention 14 janvier 2017 33
15 août 2010 à 17:24
Si tu veux que la Form enfant connaisse son Parent, passe-lui en parametre à la création.


private Parent {get; set;}
Public Form mdp( From parent)
{
   Parent =parent;
}

pour cacher le parent:
Parent.Hide();

et dans Accueil
mdp mdpnew = new mdp(this);


Bob
C# is amazing, enjoy it!
3
cs_Robert33 Messages postés 834 Date d'inscription samedi 15 novembre 2008 Statut Membre Dernière intervention 14 janvier 2017 33
15 août 2010 à 08:27
Bonjour

Si je comprends bien, tu veux fermer le formulaire parent depuis un enfant.
Si tu fais un "Accueil acc = new Accueil();" cela va créer un nouveau formulaire parent, il faudra donc recréer un enfant, mais que deveint l'enfant dans lequel tu te trouves ?
c'est un peu comme si tu remontais le temps pour détruire et recreer tes parents, paradoxe temporel bien connu et non résolu

Comme je ne sais pas ce que tu entends par "Rafraichir" la form Accueil je te propose tout de même l'utilisation d'un evenement:

Dans la Form mdp, tu définis un evenement:

//Définition de la signature des evenements
public delegate void MyDelegate(string a);
class mdp
{
// on défini un evenement de type MyDelegate
public event MyDelegate MyEvent;
...
}

lorsque tu désire refraichir l'accueil, tu lances l'évenement

//Si quelqu'un s'est abonné à l'évenment on le lance
if (MyEvent != null)
MyEvent("coucou");


dans la Form Acceuil, tu t'abonnes à cet évenement;

panel1.Controls.Clear();
mdp mdpnew = new mdp();
mdpnew.MyEvent += new MyDelegate(mdpnew_MyEvent);//ici
mdpnew.TopLevel = false;
panel1.Controls.Add(mdpnew);
mdpnew.Show();

et tu traites la réception de l'evenement
void mdpnew_MyEvent(string a)
{
MessageBox.Show("Reçu " + a);
}



Bon code
Bob
C# is amazing, enjoy it!
0
altozinzin Messages postés 54 Date d'inscription vendredi 14 mai 2004 Statut Membre Dernière intervention 6 mai 2011
15 août 2010 à 13:10
Merci mais ça marche pas vraiment.

En gros ce que je souhaite faire c'est fermer le Form Parent depuis le Form child.

J'ai essayé ceci:

Dans le parent:
           panel1.Controls.Clear();
           mdp mdpnew = new mdp();
           mdpnew.TopLevel = false;
           mdpnew.MdiParent = this;
           panel1.Controls.Add(mdp);
           mdp.Show();


et dans le child:

 (Accueil)MdiParent).Hide();


Mais j'ai une erreur d'instance...
0
altozinzin Messages postés 54 Date d'inscription vendredi 14 mai 2004 Statut Membre Dernière intervention 6 mai 2011
15 août 2010 à 13:12
 panel1.Controls.Add(mdpnew);

et non pas
panel1.Controls.Add(mdp);

bien sûr.
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
altozinzin Messages postés 54 Date d'inscription vendredi 14 mai 2004 Statut Membre Dernière intervention 6 mai 2011
16 août 2010 à 13:45
Ca me donne (adapté à mon code)

 

        private Accueil parent;
        public mdp(Accueil acc)
        {
          InitializeComponent();
          parent = acc;
       }


Ca marche nickel, merci beaucoup!!
0
Rejoignez-nous