Bonjour a tous.
Voila je travaille en winForm sous VS2005 et j'ai un projet avec deux form.
Chacune on un bouton qui permettent normalement d'acceder à l'autre form..
Je n'arrive pas à faire cela, comment dois je m'y prendre?
Merci
Bonjour a tous.
Voila je travaille en winForm sous VS2005 et j'ai un projet avec deux form.
Chacune on un bouton qui permettent normalement d'acceder à l'autre form..
Je n'arrive pas à faire cela, comment dois je m'y prendre?
Merci
J'ai pas très bien compris j'ai deux interprétations :
1) Les forms sont déjà toutes les deux affichées et tu veus basculer l'affichage des forms
2) Il n'y a qu'une seul form d'afficher et tu veus afficher la deuxième
C'est plutot la deuxieme solution...
J'ai un menu quand je clique sur un bouton du menu (form1) je veux afficher la form2 (la form1 ne doit plus etre visible)...sur la form2 j'ai un bouton de retour au menu (form1)...quand je clique dessus je ne veux plus voir la form2 mais seulement la form1...
Voila
ok donc dans l'evenement de ton bouton de ta form1 tu fait :
et sur ton bouton de ta form2 tu fait :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4 Form2 frm = new form2(); frm.Show(); this.Close();
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4 Form1 frm1 = new form1(); frm1.Show(); this.Close();
ben non ca marche pas....ca ferme mon appli quand je suis sur form2 et que je veux revenir sur form1
mais cela ne m'étonne pas puisque j'ai ca:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3 Application.Run(new Form1()); Application.Run(new Form2());
Joue plutôt sur Show() et Hide().
Ainsi : les deux formulaires "existent" toujours, mais sont montrés ou non.
Je ne connais pas ton programme, et je ne sais pas quelles données tu mets dans tes formulaires, mais :
si le formulaire 2 est un "dérivé" du formulaire 1 (choix d'une option avant de revenir au menu...), et que le formulaire 1 est le formulaire principal, il me semblerait plus logique de ne mentionner que le formulaire 1 dans la fonction Main() et de créer un nouveau formulaire 2 au moment adéquat.
Je pense que tu dois pouvoir ouvrir tes deux forms au démarrage et ensuite jouer avec les méthode Hide() (de chaque Form) et/ou l'attribut Visible (de chaque form).
Tu te fera moins chier...
Au pire, tu la joues royal avec des événements, moi j'opte encore pour dire que c'est le plus propre mais bon c'est au choix...
Bon courage et @+
Antoine
__EDIT
Ptin j'ai mis 4 minutes à écrire mon message... lol, j'avais pas vu celui de Astartee
Normal c'est pas un close qu'il faut faire mais un Hide comme ca ta form est cachée mais existe toujours. SI tu la ferme et que c'est ta form principale alors l'application s'arrete.Envoyé par UnSofteuxAmateur
Je viens de réussir à mettre des mots sur ce qui me perturbe dans ta fonction Main() :
Dans ce code :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2 Application.Run(new Form1()); Application.Run(new Form2());
Tu crées une instance de Form1, et tu l'affiches.
Puis, quand tu as fermé la Form1, tu crées une instance de Form2 et tu l'affiches.
Puis, quand tu as fermé cette Form2, le programme est terminé.
Donc : les deux forms n'existent jamais en même temps, ce qui est pourtant ce que tu veux faire (afficher une Form2 puis revenir à la Form1 = ne pas fermer la Form1...)
Proposition:
Ou alors, si tu préfères n'utiliser qu'une seule instance de Form2, quelque chose du genre :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27 static class Program { static void Main() { Application.Run(new Form1()); } } class Form1 { private void button_Click(object sender, EventArgs e) { Form2 form2 = new Form2(); this.Hide(); form2.ShowDialog(); // dès qu'on ferme form2 on revient à ce point dans la fonction... this.Show(); } } class Form2 { private void button_Click(object sender, EventArgs e) { this.Close(); // et c'est tout ! } }
A adapter selon ce que tu veux faire exactement...
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18 class Form1 { private Form2 form2; public Form1() { InitializeComponent(); form2 = new Form2(); } private void button_Click(object sender, EventArgs e) { this.Hide(); form2.ShowDialog(); // dès qu'on ferme form2 on revient à ce point dans la fonction... this.Show(); } }
ça m'arrive tout le temps, ça, passer 10 minutes à peaufiner une réponse puis me rendre compte que je me suis fait griller...Envoyé par NeraOne
EDIT : corection errers frppe
Vous avez un bloqueur de publicités installé.
Le Club Developpez.com n'affiche que des publicités IT, discrètes et non intrusives.
Afin que nous puissions continuer à vous fournir gratuitement du contenu de qualité, merci de nous soutenir en désactivant votre bloqueur de publicités sur Developpez.com.
Partager