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 :

Quitter l'application au démarrage


Sujet :

Windows Forms

  1. #1
    Membre émérite
    Profil pro
    Mangeur de gauffre
    Inscrit en
    Octobre 2007
    Messages
    4 413
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations professionnelles :
    Activité : Mangeur de gauffre

    Informations forums :
    Inscription : Octobre 2007
    Messages : 4 413
    Points : 2 498
    Points
    2 498
    Par défaut Quitter l'application au démarrage
    Bonjour

    Je suis confronté a un probleme que je n'avais curieusement jamais experimenté

    Je souhaite munir mon application d'un Login
    Donc je me dis que le plus simple c'est d'ouvrir une form dialogue dans le constructeur de la Form Principale et, le cas échéant, faire un Application.Exit() a la sortie du dialogue :
    Ca ne marche pas : la form principale finit toujours par etre affichée ?

    Tant pis me dis-je : je mets le Dialogue dans le Form.Load

    C'est un peu plus efficace mais si je ne prends pas soin de mettre le Dialogue a la FIN du Load, j'ai quand meme un fantome de la form principale qui apparait !

    Quelqu'un peut-il m'expliquer ce comportement et peut-etre me suggerer la meilleure maniere de faire ?

    Merci de votre aide
    « Ils ne savaient pas que c'était impossible, alors ils l'ont fait ». (Twain)

  2. #2
    Membre éprouvé Avatar de sisqo60
    Homme Profil pro
    Consultant informatique
    Inscrit en
    Février 2006
    Messages
    754
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Indre et Loire (Centre)

    Informations professionnelles :
    Activité : Consultant informatique

    Informations forums :
    Inscription : Février 2006
    Messages : 754
    Points : 1 188
    Points
    1 188
    Par défaut
    Bonsoir,

    Si j'étais toi, je ferais ça dans le main. J'ai vu beaucoup de dévs qui n'osaient pas toucher au program.cs sois disant que c'était du code généré par VS, mais non.

    Bref, un truc 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
     
            static void Main(string[] args)
            {
                Application.EnableVisualStyles();
                Application.SetCompatibleTextRenderingDefault(false);
                /*
                 * Récupération des arguments, exemple login et mot de passe
                 */
                string login = "login en paramètre";
                string password = "mot de passe en paramètre";
                //et tu eux éviter d'ouvrir le fenêtre de login si le login et password sont OK...
     
                using (FormLogin frmlogin = new FormLogin())
                {
                    //Dialogresult peut-être OK, ou ce que tu veux...
                    if (frmlogin.ShowDialog() == DialogResult.Yes)
                    {
                        Application.Run(new MainForm());
                    }
                }
            }
    Bon dév...
    Un âne se croit savant parce qu'on le charge de livres (proverbe américain)

    N'oubliez pas de avant de
    Pas de question techniques par MP, c'est contre la philosophie du forum

  3. #3
    Membre émérite
    Profil pro
    Mangeur de gauffre
    Inscrit en
    Octobre 2007
    Messages
    4 413
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations professionnelles :
    Activité : Mangeur de gauffre

    Informations forums :
    Inscription : Octobre 2007
    Messages : 4 413
    Points : 2 498
    Points
    2 498
    Par défaut
    Merci sisqo60

    Oui tu as sans doute raison
    C'est effectivement plus "propre" que de lancer mon dialogue dans la form principale
    Mais le comportement que j'ai rencontré etait un peu interpellant !
    « Ils ne savaient pas que c'était impossible, alors ils l'ont fait ». (Twain)

  4. #4
    Membre éprouvé Avatar de sisqo60
    Homme Profil pro
    Consultant informatique
    Inscrit en
    Février 2006
    Messages
    754
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Indre et Loire (Centre)

    Informations professionnelles :
    Activité : Consultant informatique

    Informations forums :
    Inscription : Février 2006
    Messages : 754
    Points : 1 188
    Points
    1 188
    Par défaut
    Bonsoir,

    Oui, je crois que j'ai zappé une partie de ta question, mais c'est pas surprenant, dans le constructeur, tu ne peux pas appeler le destructeur de l'objet... ça me parait assez logique. L'évènement form_load se produit lorsque le formulaire s'affiche donc, oui c'est normal qu'on voit ton formulaire par derrière.

    j'ai été vite dans ma réponse, mais c'est pas anormal.
    Un âne se croit savant parce qu'on le charge de livres (proverbe américain)

    N'oubliez pas de avant de
    Pas de question techniques par MP, c'est contre la philosophie du forum

  5. #5
    Membre chevronné
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Avril 2009
    Messages
    1 048
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : Suisse

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : Finance

    Informations forums :
    Inscription : Avril 2009
    Messages : 1 048
    Points : 2 201
    Points
    2 201
    Par défaut
    La solution de sisqo60 est la plus propre. Elle te permet aussi d'avoir une application qui survit sans formulaire mais avec un icone dans la zone de notification de windows par exemple.

    Par contre du coup il n'est plus possible d'utiliser le code auto-généré par les propriété du projet de visual studio concernant l'infrastucture de l'application (Le formulaire ou tu choisis le formulaire de démarage, si l'application est à instance unique, etc.).

    Autrement le test dans l'évenement load est aussi une solution acceptable. Tu peux très bien réduire la fenêtre dans la barre des tâches avant la boite de dialogue (ne pas oublier de la remonter ensuite) afin d'éviter le formulaire blanc phantome.

    Si tu veux mettre le test dans le sub New, c'est possible aussi. Il faut alors utiliser une variable drapeau (boolean) selon le résultat de l'opération. Il ne reste plus qu'à tester cette variable sur le load et de fermer le formulaire si besoin. Il est aussi possible de lançer une exception dans le constructeur, ce qui évitera la création de l'objet et provoquera un crash monumental de ton application. C'est pas propre du tout mais ça doit marcher...

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

Discussions similaires

  1. Quitter mon application
    Par nenette dans le forum Access
    Réponses: 6
    Dernier message: 13/10/2004, 09h48
  2. Quitter une application
    Par fgrandjean dans le forum C++Builder
    Réponses: 2
    Dernier message: 04/08/2004, 13h39
  3. lancer une application au démarrage de WinXP
    Par Sph@x dans le forum Windows
    Réponses: 6
    Dernier message: 07/04/2004, 18h05
  4. Quitter une application FLASH ?
    Par jeje.r dans le forum Flash
    Réponses: 3
    Dernier message: 25/02/2003, 14h57
  5. Impossible de quitter mon application!
    Par Bouillou dans le forum C++Builder
    Réponses: 4
    Dernier message: 12/11/2002, 20h43

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