IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Windows Forms Discussion :

fermeture d'une fenêtre lors de l'ouverture d'une autre dans un même projet


Sujet :

Windows Forms

  1. #1
    Membre régulier
    Inscrit en
    Avril 2006
    Messages
    254
    Détails du profil
    Informations forums :
    Inscription : Avril 2006
    Messages : 254
    Points : 80
    Points
    80
    Par défaut fermeture d'une fenêtre lors de l'ouverture d'une autre dans un même projet
    Bonsoir,

    J'ai deux fenêtres dans mon projet: windowsform, lorsque j'exécute sava, la premiére fenêtre s'affiche, je click sur un bouton elle ouvre la deuxiéme fenêtre mais elle ne se ferme pas, et c'est ça mon problème, j'ai créer une instance de la premiére fenêtre dans ma Form2, et crée l'évennement, Load, pour que quant la deuxiéme form s'affiche la première se ferme avec l'instruction: f1.close(), mais ça ne fonctionne pas, et c'est toute à fait logique, ci dessous vous trouverez mon code, s'il vous plaît aidez moi à résoudre ce petit problème, petit pour vous un peut plus grand pour moi, parceque je suis entrain d'apprendre

    Form1:
    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
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    namespace psy
    {
        public partial class Form1 : Form
        {
     
            private string login, mp;
            Form2 myForm2 = new Form2();
            public Form1()
            {
                InitializeComponent();
                SetStyle(ControlStyles.DoubleBuffer | ControlStyles.AllPaintingInWmPaint, true);
            }
     
            protected override void Dispose(bool disposing)
            {
                if (disposing)
                {
                    if (components != null)
                    {
                        components.Dispose();
                    }
                }
                base.Dispose(disposing);
            }
     
     
            private void button1_Click(object sender, EventArgs e)
            {
                Application.Exit();
            }
     
            private void button2_Click(object sender, EventArgs e)
            {
                login = textBox1.Text;
                mp = textBox2.Text;
                if (login == "admin" && mp == "admin")
                {
                    //comment faire pour garder la forme 2 ouverte et fermer la forme 1 
                    //this.Close();
     
                    myForm2.Show();
                }
                else
                    MessageBox.Show("Veuillez vérifier votre login et mot de passe", "Erreur de saisie", MessageBoxButtons.OK, MessageBoxIcon.Warning);
            }
     
            }
     
     
     
        }
    Form2:

    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
    28
    29
    30
    31
    32
    33
    34
    35
    36
    namespace psy
    {
        public partial class Form2 : Form
        {
            public Boolean Tr = false;
            private string d, dd;
            String elemSelected = ""; //this.comboBoxTypeFichier.Text;
            int itemSelected = 0;
            public string NomFormAffiche = "";
            private DateTime taw = new DateTime();
     
     
     
            public Form2()
            {
                InitializeComponent();
            }
     
                 private void Form2_Load(object sender, EventArgs e)
            {
                taw = DateTime.Now;
                d = taw.ToString("dddd");
                dd = d.ToString();
                this.label1.Text = d + " le: ";
                this.label2.Text = taw.ToString();
                //myForm1.Close();
            }
     
            private void quitterToolStripMenuItem_Click(object sender, EventArgs e)
            {
                Application.Exit();
            }
     
     
     
        }
    Merci infiniment,

  2. #2
    Membre habitué Avatar de bobmidou
    Profil pro
    Inscrit en
    Avril 2008
    Messages
    121
    Détails du profil
    Informations personnelles :
    Localisation : Canada

    Informations forums :
    Inscription : Avril 2008
    Messages : 121
    Points : 149
    Points
    149
    Par défaut
    Salut

    Je pense que
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    Application.Exit(); // ferme toute l'application
    alors essaye de mettre Close() ou dispose()

  3. #3
    Membre régulier
    Inscrit en
    Avril 2006
    Messages
    254
    Détails du profil
    Informations forums :
    Inscription : Avril 2006
    Messages : 254
    Points : 80
    Points
    80
    Par défaut
    J'ai essayer mais ça ne marche tj pas

    en fait mon problème c'est non seulement la fermeture de la Form1 qui contient le contrôle déclenchant l'ouverture de la Form2, mais aussi, l'ouverture de celle çi, elle ne s'ouvre, que lorsque j'écrit: Application.run(new Form2()); dans main, est ce qu'il y a une autre façon d'ouvrire une forme, sans passer par le main? je croi que non

    Je m'excuse si je n'ai pas bien formuler ma question.

  4. #4
    Membre habitué Avatar de bobmidou
    Profil pro
    Inscrit en
    Avril 2008
    Messages
    121
    Détails du profil
    Informations personnelles :
    Localisation : Canada

    Informations forums :
    Inscription : Avril 2008
    Messages : 121
    Points : 149
    Points
    149
    Par défaut
    Salut

    Si j'ai bien compris tu as 2 forms à part la form principale ?
    La fermeture d'une form ouvre l'autre ?

    et dans chaque form tu mes un bouton pour fermer celle-ci et ouvrir l'autre ?

    désolé si je te suis pas bien

  5. #5
    Membre régulier
    Inscrit en
    Avril 2006
    Messages
    254
    Détails du profil
    Informations forums :
    Inscription : Avril 2006
    Messages : 254
    Points : 80
    Points
    80
    Par défaut
    oui pour : 2 Forms à part la Form principale, je ne sais pas si c'est ça ou non, j'ai Trois form, la prmiére c'est la principale, puis la deuxiéme qui contient un combobox, et un label, je veux que la troisiéme form, ne soit ouverte que lorsque [l'on choisie un paramètre parmis ceux présent dans ma combobox et lorsque l'on click sur ce label]. donc non pour le bouton qui ouvre la troisiéme form.
    Et quant la troisiéme forme s'ouvre, la deuxiéme forme soit fermé, j'espère que ça devient plus clair, mais merci quant même

  6. #6
    Membre habitué Avatar de bobmidou
    Profil pro
    Inscrit en
    Avril 2008
    Messages
    121
    Détails du profil
    Informations personnelles :
    Localisation : Canada

    Informations forums :
    Inscription : Avril 2008
    Messages : 121
    Points : 149
    Points
    149
    Par défaut
    Salut

    f1 ouvre f2 (avec load)
    et f2 ouvre f3
    f3 avec load ferme f2

    essaye dans l'ouverture de f3
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
     private void Form3_Load(object sender, EventArgs e)
    {
         ActiveForm.Close();
    }
    bonne chance

  7. #7
    Membre régulier
    Inscrit en
    Avril 2006
    Messages
    254
    Détails du profil
    Informations forums :
    Inscription : Avril 2006
    Messages : 254
    Points : 80
    Points
    80
    Par défaut
    ça ne marche toujours pas, Je reformule le problème:

    on a disons, 4 Forme:
    une principale (Form1): contenant un bouton qui ouvre la Forme2.
    la Forme 2: contient un combobox, contenant la liste des formes à sélectionner pour les ouvrires, item1= Form3, item2= Form4
    et contient aussi, un label, qui joue le role d'un lien, aprés le choix de la forme à ouvrire, l'utilisateur, doit cliquer sur le label, pour ouvrire la forme choisie.

    j'ai essayer de toutes les façons, mais j'arrive tj pas

  8. #8
    Membre habitué Avatar de bobmidou
    Profil pro
    Inscrit en
    Avril 2008
    Messages
    121
    Détails du profil
    Informations personnelles :
    Localisation : Canada

    Informations forums :
    Inscription : Avril 2008
    Messages : 121
    Points : 149
    Points
    149
    Par défaut
    salut

    J'ai vu que tu as mis :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    Form2 myForm2 = new Form2();
    au début de ta classe Form1 , enlève là de là et met la dans

    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
    private void button2_Click(object sender, EventArgs e)
            {
                login = textBox1.Text;
                mp = textBox2.Text;
                if (login == "admin" && mp == "admin")
                {
                    //comment faire pour garder la forme 2 ouverte et fermer la forme 1 
                    //this.Close();
     
                    Form2 myForm2 = new Form2();
                    myForm2.Show();
                }
                else
                    MessageBox.Show("Veuillez vérifier votre login et mot de passe", "Erreur de saisie", MessageBoxButtons.OK, MessageBoxIcon.Warning);
            }
    puis pour f3 et f4

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
     private void Form3_Load(object sender, EventArgs e)
    {
         ActiveForm.Close();
    }
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
     private void Form4_Load(object sender, EventArgs e)
    {
         ActiveForm.Close();
    }
    Je crois que ça devrait marcher comme ça
    Bonne chance et bonne nuit

  9. #9
    Membre habitué Avatar de bobmidou
    Profil pro
    Inscrit en
    Avril 2008
    Messages
    121
    Détails du profil
    Informations personnelles :
    Localisation : Canada

    Informations forums :
    Inscription : Avril 2008
    Messages : 121
    Points : 149
    Points
    149
    Par défaut
    re

    D'après ton dernier message tu n'a pas besoin alors de
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
     ActiveForm.Close();
    tu ouvre f2 avec le bouton de f1
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
     private void button1_Click(object sender, EventArgs e)
            {
                Form frm = new Form2();
                frm.Show();
                this.Close();
            }
    tu ouvre f3 ou f4 avec ton label et tu ferme f2
    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
     
      private void label1_Click(object sender, EventArgs e)
            {
                if (...)
                {
                    Form frm = new Form3();
                    frm.Show();
                    this.Close();
                }
     
                if (...)
                {
                    Form frm = new Form4();
                    frm.Show();
                    this.Close();
                }
            }
    Bonne chance

  10. #10
    Membre régulier
    Inscrit en
    Avril 2006
    Messages
    254
    Détails du profil
    Informations forums :
    Inscription : Avril 2006
    Messages : 254
    Points : 80
    Points
    80
    Par défaut
    Bonjour,
    Merci parceque tu essaye encore de m'aider à rézoudre ce problème.
    Mais ça ne marche tj pas, sava pour la forme1, elle se ferme à l'ouverture de la forme 2 aprés le click sur le bouton, mais ça ne marche pas avec le click sur le label, voici ce que j'ai écrit:
    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
    private void labelNouveau_Click(object sender, EventArgs e)
                {
     
                    itemSelected = comboBoxTypeFichier.SelectedIndex;
                  elemSelected = this.comboBoxTypeFichier.Text;
                  if (elemSelected == "A" || elemSelected == "B" )
                  {
     
                          switch (itemSelected)
                          {
                              case 1: Form frm = new A();
                                      frm.Show();
                                      this.Close();
     
                                   break;
                              case 2: Form frm2 = new B();
                                      frm2.Show();
                                      this.Close();
                                   break;
    Mais , ça ne marche pas, même pour la forme2, si je n'écrit pas:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Application.run(new Form2)
    , ça ne marche pas, et si je fait la même chose pour les Formes A, et B, elles s'ouvrent après la fermetures de la Forme 2, comme si il n' y a pas un autre moyen pour ouvrire les formes que depuis Main, ou est ce que je me trompe?

  11. #11
    Membre habitué Avatar de bobmidou
    Profil pro
    Inscrit en
    Avril 2008
    Messages
    121
    Détails du profil
    Informations personnelles :
    Localisation : Canada

    Informations forums :
    Inscription : Avril 2008
    Messages : 121
    Points : 149
    Points
    149
    Par défaut
    Salut

    Ça devrai marcher avec ton code je ne sais pas pourquoi et ça serai mieux de nous montrer l'erreur

    essaye
    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
     
    private void labelNouveau_Click(object sender, EventArgs e)
    {
        Form frm;
        itemSelected = comboBoxTypeFichier.SelectedIndex;
     
        switch (itemSelected)
        {
             // si A occupe la premiere place de ton combobox mes case : 0  pour A et case : 1 pour afficher B
     
            case 1: 
                   frm = new A(); 
                   frm.Show();
                   this.Close();
            break;
     
            case 2: 
                   frm = new B();  
                   frm2.Show();
                   this.Close();
            break;

  12. #12
    Membre régulier
    Inscrit en
    Avril 2006
    Messages
    254
    Détails du profil
    Informations forums :
    Inscription : Avril 2006
    Messages : 254
    Points : 80
    Points
    80
    Par défaut
    le problème c'est dans l'exécution, je vous simplifie le problème, voilà seulement le code pour ouvrire la forme2 aprés un click sur le bouton qui se trouve dans la forme 1:

    Form1.cs
    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
    namespace LienFormToForm
    {
        public partial class Form1 : Form
        {
            public Form1()
            {
                InitializeComponent();
            }
     
            private void button1_Click(object sender, EventArgs e)
            {
                Form frm = new Form2();
                frm.Show();
                this.Close();
            }
        }
    }
    Form2.cs

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    namespace LienFormToForm
    {
        public partial class Form2 : Form
        {
            public Form2()
            {
                InitializeComponent();
            }
        }
    }
    Program.cs

    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
    namespace LienFormToForm
    {
        static class Program
        {
            /// <summary>
            /// Point d'entrée principal de l'application.
            /// </summary>
            [STAThread]
            static void Main()
            {
                Application.EnableVisualStyles();
                Application.SetCompatibleTextRenderingDefault(false);
                Application.Run(new Form1());
     
    // si je met cette ligne, l'exécution semble être réussie, aprés le click, la form1 se ferme et la FOrme 2 s'affiche, si non la forme 1 se ferme, mais la forme2 ne s'affiche pas, il me semble, qu'elle est peut être affiché mais vite fermé, je ne sais pas. et c'est presque le même problème pour toutes les autres Formes, avec combobox et tout.
                    Application.Run(new Form2());
            }
        }
    }

  13. #13
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Février 2007
    Messages
    21
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2007
    Messages : 21
    Points : 25
    Points
    25
    Par défaut
    Pourquoi tu ne fais pas this.Hide() au lieu de this.Close() dans le gestionnaire de l'événement Click sur le bouton.

    Lorsque tu fais un this.Close(), tu fermes aussi ta deuxiéme fenêtre puisqu'elle dépend de la premiére.

  14. #14
    Membre régulier
    Inscrit en
    Avril 2006
    Messages
    254
    Détails du profil
    Informations forums :
    Inscription : Avril 2006
    Messages : 254
    Points : 80
    Points
    80
    Par défaut
    Merci Mouloch, c'est enfin résolu en ce qui concerne, la première partie de ma question, je vais voir maintenant la deuxiéme et je continue à vous poser la question si ça ne se résoud pas, merci

  15. #15
    Membre régulier
    Inscrit en
    Avril 2006
    Messages
    254
    Détails du profil
    Informations forums :
    Inscription : Avril 2006
    Messages : 254
    Points : 80
    Points
    80
    Par défaut
    Enfin c'est résolu . Merci bcp Mouloch, merci bcp BobMidou.

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Réponses: 8
    Dernier message: 16/04/2013, 11h06
  2. [WD9] Erreur lors de de l'ouverture d'une fenêtre
    Par ahmedess dans le forum WinDev
    Réponses: 6
    Dernier message: 15/12/2011, 08h27
  3. Réponses: 7
    Dernier message: 31/07/2009, 12h45
  4. Ouvrir une fenêtre en pop-up à partir d'une fenêtre pop-up
    Par beji15 dans le forum Général JavaScript
    Réponses: 7
    Dernier message: 13/02/2008, 19h41
  5. Réponses: 12
    Dernier message: 06/06/2006, 12h13

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo