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 :

[C#] Fermer la form qui autorise l'accès à l'application


Sujet :

Windows Forms

  1. #1
    Membre du Club
    Inscrit en
    Mars 2003
    Messages
    88
    Détails du profil
    Informations personnelles :
    Âge : 41

    Informations forums :
    Inscription : Mars 2003
    Messages : 88
    Points : 59
    Points
    59
    Par défaut [C#] Fermer la form qui autorise l'accès à l'application
    Bonjour,
    J'ai fait une application en C#.
    J'ai voulu créer une fenetre demandant un mot de passe pour pouvoir lancer ce programme.
    J'ai créé une form frmLogin.cs qui demande à l'utilisateur de rentrer le mot de passe. Si le mot de passe est correcte l'application est lancé par :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    				frmPrincipal fPrincipal = new frmPrincipal();
    				fPrincipal.Show();
    				this.Hide();
    Mais le problème, c'eqt ue le programme reside toujours en memoire ! la fenetre reste en Hide, mais si j'utilise Close(), le programme ne se lance pas...
    Quelqu'un a une solution ?
    Merci d'avance !

  2. #2
    Membre régulier
    Inscrit en
    Décembre 2003
    Messages
    160
    Détails du profil
    Informations forums :
    Inscription : Décembre 2003
    Messages : 160
    Points : 92
    Points
    92
    Par défaut
    c'est tout a fait normal que ton programme "reste en memoire".

    tu ouvre une nouvelle form ...

  3. #3
    Expert éminent
    Avatar de neguib
    Profil pro
    Inscrit en
    Mai 2005
    Messages
    3 627
    Détails du profil
    Informations personnelles :
    Âge : 64
    Localisation : Suisse

    Informations forums :
    Inscription : Mai 2005
    Messages : 3 627
    Points : 7 879
    Points
    7 879
    Par défaut
    Ton affichage du logForm devrait se faire dans le Main peut être

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    //SI c'est le bon login
    if (ok)
     { Application.Run(//etc... }
    //SINON rien n'est lancé

  4. #4
    Membre du Club
    Inscrit en
    Mars 2003
    Messages
    88
    Détails du profil
    Informations personnelles :
    Âge : 41

    Informations forums :
    Inscription : Mars 2003
    Messages : 88
    Points : 59
    Points
    59
    Par défaut
    Citation Envoyé par neguib
    Ton affichage du logForm devrait se faire dans le Main peut être

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    //SI c'est le bon login
    if (ok)
     { Application.Run(//etc... }
    //SINON rien n'est lancé
    Dans le main, je suis obligé de lancer frmLogin, et si j'utilise Application.run(new FrmPrincipal) pour lancer FrmPrincipal, j'ai ce message d'erreur
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    An unhandled exception of type 'System.InvalidOperationException' occurred in system.windows.forms.dll
     
    Additional information: It is invalid to start a second message loop on a single thread. Use Application.RunDialog or Form.ShowDialog instead.
    Citation Envoyé par chnew
    c'est tout a fait normal que ton programme "reste en memoire".

    tu ouvre une nouvelle form ...
    Et tu n'as pas une solution à me proposer pour qu'a la fermeture de frmPrincipal, mon frmLogin passe de Hide a Close ?
    Ou alors de fermer frmLogin et d'ouvrir frmPrincipal ?
    Merci d'avance !

  5. #5
    Membre régulier
    Inscrit en
    Juillet 2005
    Messages
    83
    Détails du profil
    Informations forums :
    Inscription : Juillet 2005
    Messages : 83
    Points : 100
    Points
    100
    Par défaut
    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
    		static void Main()
    		{
    			Application.EnableVisualStyles();
    			Application.SetCompatibleTextRenderingDefault(false);
     
    			LoginForm login = new LoginForm();
    			if (login.ShowDialog() == DialogResult.OK)
    			{
    				Application.Run(new MainForm());
    			}
    			else
    			{
    				Application.Exit();
    			}
    		}
    Avec la valeur login.DialogResult attribuée selon ta logique de validation dans LoginForm.

  6. #6
    Membre confirmé
    Profil pro
    Inscrit en
    Juillet 2002
    Messages
    487
    Détails du profil
    Informations personnelles :
    Âge : 55
    Localisation : France, Maine et Loire (Pays de la Loire)

    Informations forums :
    Inscription : Juillet 2002
    Messages : 487
    Points : 621
    Points
    621
    Par défaut
    Très bon exemple de Wyatan.

    On peut cependant supprimer Application.Exit() puisque l'application se termine naturellement à la sortie du main.

    Les puristes ajouteront aussi login.Dispose().

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    		static void Main()
    		{
    			Application.EnableVisualStyles();
    			Application.SetCompatibleTextRenderingDefault(false);
     
    			LoginForm login = new LoginForm();
    			if (login.ShowDialog() == DialogResult.OK)
    			{
    				login.Dispose();
    				Application.Run(new MainForm());
    			}
    		}

  7. #7
    Membre du Club
    Inscrit en
    Mars 2003
    Messages
    88
    Détails du profil
    Informations personnelles :
    Âge : 41

    Informations forums :
    Inscription : Mars 2003
    Messages : 88
    Points : 59
    Points
    59
    Par défaut
    Merci a tous les 2 !
    Effectivement, c'est exactement ce que je souhaite, sauf que apres avoir validé mon mot de passe, la variable login.ShowDialog() est egal a <overloaded> (?) d'apres le debugger. Je dois sans doute retourner une valeur OK dans mon frmLogin mais je sais pas ou (j'ai essayé de faire un DialogResult.OK dans ma fonction btnLogin_Click mais ca ne passe pas)

    Merci d'avance pour votre aide !

    PS : j'ai aussi cette erreu a la compilation :
    'System.Windows.Forms.Application' does not contain a definition for 'SetCompatibleTextRenderingDefault'

  8. #8
    Membre du Club
    Inscrit en
    Mars 2003
    Messages
    88
    Détails du profil
    Informations personnelles :
    Âge : 41

    Informations forums :
    Inscription : Mars 2003
    Messages : 88
    Points : 59
    Points
    59
    Par défaut
    Bon en fait j'ai compris : je devais juste placer ma variable DialogResult a ok dans mon formulaire frmLogin.

    Une derniere question :
    A quoi sert la propriété :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Application.SetCompatibleTextRenderingDefault(false);
    Et pourquoi ca ne fonctionne pas chez moi ? (j'ai installé le framework 1.1, ca vient de la ?)

    Merci a tous !

  9. #9
    Membre régulier
    Inscrit en
    Juillet 2005
    Messages
    83
    Détails du profil
    Informations forums :
    Inscription : Juillet 2005
    Messages : 83
    Points : 100
    Points
    100
    Par défaut
    Et pourquoi ca ne fonctionne pas chez moi ? (j'ai installé le framework 1.1, ca vient de la ?)
    Oui, c'est une nouveauté du 2.0.
    Donc laisse juste tomber cette ligne.

  10. #10
    Expert éminent
    Avatar de neguib
    Profil pro
    Inscrit en
    Mai 2005
    Messages
    3 627
    Détails du profil
    Informations personnelles :
    Âge : 64
    Localisation : Suisse

    Informations forums :
    Inscription : Mai 2005
    Messages : 3 627
    Points : 7 879
    Points
    7 879
    Par défaut
    Ben il était pas clair mon algo bande de copieux

  11. #11
    Membre du Club
    Inscrit en
    Mars 2003
    Messages
    88
    Détails du profil
    Informations personnelles :
    Âge : 41

    Informations forums :
    Inscription : Mars 2003
    Messages : 88
    Points : 59
    Points
    59
    Par défaut
    Citation Envoyé par neguib
    Ben il était pas clair mon algo bande de copieux
    si si !
    juste que je connaissais pas .ShowDialog()

    Et merci a tous !

  12. #12
    Nouveau Candidat au Club
    Inscrit en
    Septembre 2006
    Messages
    1
    Détails du profil
    Informations forums :
    Inscription : Septembre 2006
    Messages : 1
    Points : 1
    Points
    1
    Par défaut Methode SetCompatibleTextRenderingDefault
    Utilité de cette méthode :
    Si true, les nouveaux contrôles qui prennent en charge UseCompatibleTextRendering utilisent GDI+ pour le rendu de texte ; si false, les nouveaux contrôles utilisent GDI+.

    source : http://msdn2.microsoft.com/fr-fr/lib...ngdefault.aspx

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

Discussions similaires

  1. Hebergeur qui autorise l'acces a distance d'une base MS SQL
    Par indianchief dans le forum Développement
    Réponses: 0
    Dernier message: 21/09/2008, 17h20
  2. Autorisation d'accès sur internet
    Par ibtisss dans le forum SQL Procédural
    Réponses: 1
    Dernier message: 12/09/2005, 15h35
  3. Form qui crée un espacement sous IE
    Par Death83 dans le forum Balisage (X)HTML et validation W3C
    Réponses: 3
    Dernier message: 04/09/2005, 13h56
  4. [VB.NET] Authentification Form qui rate.
    Par Abalalojik dans le forum ASP.NET
    Réponses: 4
    Dernier message: 10/01/2005, 13h09
  5. [Réseau] Autorisations d'accès aux fichiers
    Par Pedro dans le forum API, COM et SDKs
    Réponses: 7
    Dernier message: 19/05/2004, 13h43

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