Les Forms problemes

[Résolu]
Signaler
Messages postés
173
Date d'inscription
lundi 2 mai 2011
Statut
Membre
Dernière intervention
13 décembre 2012
-
Messages postés
173
Date d'inscription
lundi 2 mai 2011
Statut
Membre
Dernière intervention
13 décembre 2012
-
Salut,Voila j'ai quelque problème avec les forms sur C# voila mon problème.
J'ai deux forme le form1 et 2 kle form 1 s'ouvre je clique sur un bouton avec la commande :
Form test =new Frm2();
test.hide();
this.hide;


Sa marche sans problème puis sur le form 2 quand je clique j'aimerais réouvrire le form 1 enfin le reafficher non pas réouvrire totalement tous le form donc j'avez mit se code
Form test =new Frm1();
test.show();
this.close;

Bref voila donc je sais pas trop comment réouvrire mon form déja ouvert mais cachez par Hide.

Merci d'avance

5 réponses

Messages postés
1540
Date d'inscription
lundi 26 mai 2003
Statut
Membre
Dernière intervention
1 août 2013
12
Salut,

il faut que ton instance de Form2 voit l'instance de Form1 qui l'a appelé, et non qu'il fasse une nouvelle instance. Pour cela dans ta Form1 tu fais :
// nouvelle instance de frm2
Form frm = new frm2();
// on inscrit la référence à frm1 (this) dans notre instance de frm2
frm2.Owner = this;
// on cache la frm1
this.Hide();


Dans la ta Form2 tu pourras alors utiliser l'instance de Form1 :
// on réaffiche l'instance de frm1 (référencée dans Owner de frm2)
this.Owner.Show();
// on kill la frm2
this.Close();


PS : on doit avoir cette question au moins une fois par mois sur le ring CS, pense à utiliser la fonction recherche la prochaine fois.
Messages postés
224
Date d'inscription
vendredi 26 novembre 2010
Statut
Membre
Dernière intervention
11 juin 2013
7
Bonjour,

Ton code actuel recrée une instance de form1 depuis ton form2.

Une possibilité serait de passer ton form1 en paramètre de ton form2
Form2 test = new Form2(this);

et dans ton contructeur de form2 tu aura quelquechose comme;
        private Form1 f1;

        public Form2(Form1 f1)
        {
            InitializeComponent();
            this.f1 = f1;
        }

        private void button1_Click(object sender, EventArgs e)
        {
            //ici code pour masquer/afficher le form1
            //avec un test sur f1.Visibility
            if (f1.WindowState == FormWindowState.Normal)
            {
                f1.WindowState = FormWindowState.Minimized;
            }
        }
Messages postés
65
Date d'inscription
jeudi 1 septembre 2011
Statut
Membre
Dernière intervention
22 juillet 2014
8
Bonjour,

Moi je te proposerai d'utiliser la fonctionnalité DialogResult.
En fait, tu feras ça :

Form form2 = new Form2();
this.Hide();
form2.ShowModal();
this.Show();

Dans la Form2, tu as une propriété sur ton bouton qui s'appelle DialogResult, tu lui affectes par exemple OK.

Du coup, tu ouvriras ta Form2 et mettras en attente ta Form1 (en pause si tu préfères), jusqu'à ce que tu appuies sur le bouton de ta Form2.

Cette fonctionnalité est utilisée pour permettre d'utiliser les forms ensemble.

BinKentsu
Messages postés
65
Date d'inscription
jeudi 1 septembre 2011
Statut
Membre
Dernière intervention
22 juillet 2014
8
Je précise que le bout de code que j'ai écrit est à intégrer dans la Form1 (pour information que j'ai oublié de préciser ^^)
Messages postés
173
Date d'inscription
lundi 2 mai 2011
Statut
Membre
Dernière intervention
13 décembre 2012
1
Je prefert la fonction de jopop les autre fonction me plait un peut moin enfin après j'ai pas tester mais voila merci a vous tous