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 :

Retour au formulaire précédent quand on clique sur la croix


Sujet :

Windows Forms

  1. #1
    Futur Membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Février 2017
    Messages
    16
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 32
    Localisation : France, Indre et Loire (Centre)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Février 2017
    Messages : 16
    Points : 6
    Points
    6
    Par défaut Retour au formulaire précédent quand on clique sur la croix
    Bonjour,

    J'ai un petit soucis.

    J'ai un Window form Menu_Principal et un autre FenClients.
    J'aimerais que, lorsque l'on est sur FenClients et que l'on clique sur la croix (en haut a droite de l'application) ça ne ferme pas toute l'application (comme actuellement) mais que ça ne ferme que le Window Form FenClients, et donc que l'on retourne sur Menu_Principal.

    Voilà le code que j'ai pour l'instant

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    private void FenClients_FormClosing(Object sender, FormClosingEventArgs e)
            {
                System.Threading.Thread monthread = new System.Threading.Thread(new System.Threading.ThreadStart(ouvrirnouveauform));
                monthread.Start();
                this.Close();
            }
     
    public static void ouvrirnouveauform()
            {
                Application.Run(new Menu_Principal());
            }
    Mais ça ne fonctionne pas
    FenClients_FormClosing ne semble pas correspondre à la croix de la page.

    Pourriez vous m'aider s'il vous plait ^^

    Cordialement

  2. #2
    Membre confirmé
    Avatar de nouanda
    Homme Profil pro
    Hobbyist
    Inscrit en
    Mai 2002
    Messages
    246
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Australie

    Informations professionnelles :
    Activité : Hobbyist

    Informations forums :
    Inscription : Mai 2002
    Messages : 246
    Points : 627
    Points
    627
    Par défaut
    Peux-tu également montrer le code qui ouvre FenClients?
    Dans ce code, utilises-tu également un this.Close(); ?
    " Entre le Savoir et le Pouvoir, il y a le Vouloir "

    Desole pour les accents, je suis en QWERTY...

  3. #3
    Futur Membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Février 2017
    Messages
    16
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 32
    Localisation : France, Indre et Loire (Centre)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Février 2017
    Messages : 16
    Points : 6
    Points
    6
    Par défaut
    Bonjour nouanda,

    Voici le code du Window Form Menu_Principal

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    private void ClientsGestMenuButton_Click(object sender, EventArgs e)
            {
                System.Threading.Thread monthread = new System.Threading.Thread(new System.Threading.ThreadStart(ouvrirGestionClient));
                monthread.Start();
                this.Close();
            }
    Faut-il pas que je fasse un Close() ?

    Cordialement

  4. #4
    Expert éminent sénior

    Avatar de François DORIN
    Homme Profil pro
    Consultant informatique
    Inscrit en
    Juillet 2016
    Messages
    2 757
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France, Charente Maritime (Poitou Charente)

    Informations professionnelles :
    Activité : Consultant informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juillet 2016
    Messages : 2 757
    Points : 10 697
    Points
    10 697
    Billets dans le blog
    21
    Par défaut
    Bonjour,

    Ce n'est effectivement pas une bonne idée de fermer un formulaire si l'objectif est de le rouvrir ensuite. Il vaut mieux le masquer/l'afficher en fonction des besoins Show/Hide, surtout lorsqu'il s'agit du formulaire principal.

    De plus, cela évite de devoir jouer avec des threads et Application.Run (qui ne devient nécessaire qu'au tout débout du programme, lors de la création du formulaire principal)
    François DORIN
    Consultant informatique : conception, modélisation, développement (C#/.Net et SQL Server)
    Site internet | Profils Viadéo & LinkedIn
    ---------
    Page de cours : fdorin.developpez.com
    ---------
    N'oubliez pas de consulter la FAQ C# ainsi que les cours et tutoriels

  5. #5
    Futur Membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Février 2017
    Messages
    16
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 32
    Localisation : France, Indre et Loire (Centre)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Février 2017
    Messages : 16
    Points : 6
    Points
    6
    Par défaut
    Bonjour,

    J'ai modifier mon code

    Menu_Principal (Bouton FenClients)

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    private void ClientsGestMenuButton_Click(object sender, EventArgs e)
            {
                FenClients FenClient = new FenClients();
                FenClient.Show();
                this.Hide();
            }
    FenClients (le bouton Fermer)

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    private void FermerFenClientsButton_Click(object sender, EventArgs e)
            {
                Menu_Principal Menu = new Menu_Principal();
                this.Close();
                Menu.Show();
            }
    Mais le problème subsiste, lors que je ferme le formulaire FenClients avec la croix en haut a droite, le formulaire Menu_Principal ne "Show" pas.
    Quelle est le "name" de la croix de fermeture ?

    Cordialement

  6. #6
    Membre confirmé
    Avatar de nouanda
    Homme Profil pro
    Hobbyist
    Inscrit en
    Mai 2002
    Messages
    246
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Australie

    Informations professionnelles :
    Activité : Hobbyist

    Informations forums :
    Inscription : Mai 2002
    Messages : 246
    Points : 627
    Points
    627
    Par défaut
    Il faut mettre du code dans l'événement "FormClosing" de ta FenClients. Par exemple:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
            private void FenClients_FormClosing(object sender, FormClosingEventArgs e)
            {
                Application.OpenForms["Menu_Principal"].Show();
            }
    Au passage, il y a problème dans ton code: a chaque fois que tu vas cliquer sur ton bouton, tu vas créer un nouveau Menu_Principal, et non pas ouvrir l'ancien.
    Tu devrais plutôt utiliser Application.OpenForms["Menu_Principal"].Show();
    " Entre le Savoir et le Pouvoir, il y a le Vouloir "

    Desole pour les accents, je suis en QWERTY...

  7. #7
    Futur Membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Février 2017
    Messages
    16
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 32
    Localisation : France, Indre et Loire (Centre)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Février 2017
    Messages : 16
    Points : 6
    Points
    6
    Par défaut
    Bonjour nouanda,

    Merci.

    Malheureusement, ça ne résout pas mon problème ; si je clique sur la croix de FenClients, le formulaire FenClients se ferme, mais le Menu_Principal reste Hide().
    Comment puis-je concircuiter la croix de fermeture de page window pour qu'elle retourne sur Menu_Principal.

    Sinon, soit, je ne cache pas le Menu_Principal, je le laisse ouvert (mais esthétiquement c'est pas beau), soit je retire la croix de fermeture pour obliger à cliquer sur le bouton fermer ^^

  8. #8
    Expert éminent sénior

    Avatar de François DORIN
    Homme Profil pro
    Consultant informatique
    Inscrit en
    Juillet 2016
    Messages
    2 757
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France, Charente Maritime (Poitou Charente)

    Informations professionnelles :
    Activité : Consultant informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juillet 2016
    Messages : 2 757
    Points : 10 697
    Points
    10 697
    Billets dans le blog
    21
    Par défaut
    Le mieux, pour parvenir à tes fins, ce n'est pas que le formulaire enfant rende visible à nouveau son parent, mais que le parent se rende visible lorsque son enfant est fermé.

    La nuance ? Au lieu vouloir rendre visible le parent dans FenClients_FormClosing, le parent, lorsqu'il créé son enfant, ajoute un gestionnaire d'événement à l'événement FormClosing. En gros, un truc du style
    Code C# : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    private void ClientsGestMenuButton_Click(object sender, EventArgs e)
    {
       FenClients FenClient = new FenClients();
       FenClient.OnClosing += (Object sender, EventArgs e) => { this.Show(); };
       FenClient.Show();
       this.Hide();
    }

    Les interactions seront ainsi beaucoup plus simple. De plus, rouvrir le formulaire parent est ainsi un jeu d'enfant !
    François DORIN
    Consultant informatique : conception, modélisation, développement (C#/.Net et SQL Server)
    Site internet | Profils Viadéo & LinkedIn
    ---------
    Page de cours : fdorin.developpez.com
    ---------
    N'oubliez pas de consulter la FAQ C# ainsi que les cours et tutoriels

  9. #9
    Futur Membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Février 2017
    Messages
    16
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 32
    Localisation : France, Indre et Loire (Centre)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Février 2017
    Messages : 16
    Points : 6
    Points
    6
    Par défaut
    Bonjour François Dorin,

    Merci pour ces explications, en effet, je comprend le principe.
    Mais ça ne règle pas mon problème que je n'ai aucune méthode qui gère le clique sur la croix.

    FenClients.OnClosing n'existe pas.

    Je peux faire une méthode :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
            private void FenClients_Closing(object sender, System.ComponentModel.CancelEventArgs e)
            {
     
            }
    (Ps : Elle doit être public sans doute pour la récupérer dans Menu_Principal)

    Mais comment détecter le déclenchement quand je clique sur la croix ?

  10. #10
    Expert éminent sénior

    Avatar de François DORIN
    Homme Profil pro
    Consultant informatique
    Inscrit en
    Juillet 2016
    Messages
    2 757
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France, Charente Maritime (Poitou Charente)

    Informations professionnelles :
    Activité : Consultant informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juillet 2016
    Messages : 2 757
    Points : 10 697
    Points
    10 697
    Billets dans le blog
    21
    Par défaut
    Citation Envoyé par KaiserNistel78 Voir le message
    FenClients.OnClosing n'existe pas.
    L'erreur est humaine ! C'est "Closing" tout court, pas "OnClosing".

    Citation Envoyé par KaiserNistel78
    Mais comment détecter le déclenchement quand je clique sur la croix ?
    Avec l'événement adéquat. Ici, c'est "Closing".
    Et c'est d'ailleurs ce que fait la méthode "FenClients_Closing". Elle est appelée suite au déclenchement de cet événement...
    François DORIN
    Consultant informatique : conception, modélisation, développement (C#/.Net et SQL Server)
    Site internet | Profils Viadéo & LinkedIn
    ---------
    Page de cours : fdorin.developpez.com
    ---------
    N'oubliez pas de consulter la FAQ C# ainsi que les cours et tutoriels

Discussions similaires

  1. Réponses: 2
    Dernier message: 30/03/2015, 14h39
  2. Réponses: 2
    Dernier message: 18/08/2009, 10h19
  3. [Toutes versions] message d'erreur quand je clique sur un bouton qui ouvre un formulaire
    Par Mat08 dans le forum IHM
    Réponses: 6
    Dernier message: 11/08/2009, 09h34
  4. Réponses: 5
    Dernier message: 09/07/2009, 14h40
  5. Insérer un code quand on clique sur un smiles
    Par Blade dans le forum Général JavaScript
    Réponses: 3
    Dernier message: 27/12/2004, 01h10

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