none
Fenêtre de connexion au démarrage avant fenêtre principale RRS feed

  • Question

  • Bonjour,


    Je développe actuellement une application VB sous Visual Studio 2003. Dans cette application au démarrage je souhaite demander à l'utilisateur de se loguer et pour cela je voulais faire apparaitre en premier lieu une form avec juste deux textbox du genre login/mot de passe et un bouton pour valider.

    J'ai donc tout d'abord pensé à mettre cette form en form à afficher au démarrage, cependant il semble qu'elle devienne la form principale donc dès qu'on la ferme elle fait fermer l'application. Ce qui n'est pas bon car quand on la ferme (car on a pu se loguer) elle devrait juste se fermer et faire apparaitre la fenêtre principale, celle avec les fonctionnalités du programme.

    Donc pour le moment j'ai trouvé un petit bricolage qui semble fonctionné. J'ai donc ma form principale qui s'appelle par exemple "main" et la form qui sert de formulaire de connexion "login". Donc j'ai laissé "main" en tant que form à afficher au démarrage, et dedans j'ai une sub main_load() handles MyBase.load et dans cette sub je dis de faire login.showDialog(). Ce qui a pour conséquence d'ouvrir seulement la form login et après l'avoir fermé m'affiche la form "main".

    Ca fait bien le travail que je veux sans trop de problème. Cependant je trouve que c'est un peu bricolé. Donc est-ce une bonne solution pour faire ce que je souhaite? Sinon qu'elle serait la solution la plus propre?

    Je vous remercie d'avance pour votre aide et vos conseils.

    lundi 26 octobre 2009 19:50

Réponses

  • Tu as aussi une autre possibilité:

    tu ajoute 1 module a ton projet.

    Dans ton module du ajoute le code suivant:

    public sub main
    
    Dim myLoginForm as new FrmLogin
    myLoginForm .ShowDialog
    
    Dim Login As String
    Dim Pass As String
    
    Login = MyLoginForm.MyLoginString
    Pass = MyLoginForm.MyPassString
    
    
    dim myMainForm as new FrmMain(Login, Pass)
    myMainForm .ShowDialog
    
    
    end sub
    
    Et tu remplace dans les propriété du projet l'élément de démarrage par "Sub Main"
    Voila une méthode qui marche aussi.
    • Proposé comme réponse Yannick Lapierre jeudi 29 octobre 2009 13:38
    • Marqué comme réponse Takumii samedi 31 octobre 2009 00:21
    jeudi 29 octobre 2009 13:37

Toutes les réponses

  • Salut,

    Va dans les propriétés de ton projet, onglet Application et View Application Events, ceci va te montrer la classe MyApplication (ApplicationEvents.vb).

    tu ajoutes quelque chose du genre dans celle-ci:
            Protected Overrides Function OnStartup(ByVal eventArgs As Microsoft.VisualBasic.ApplicationServices.StartupEventArgs) As Boolean
                Return MyBase.OnStartup(eventArgs)
                Dim frm As LoginForm
                frm.ShowDialog()
            End Function
    Voilà, tu sépare ainsi le code des 2 forms!

    Microsoft MVP C# :: mongeon.devrpm.ca
    mardi 27 octobre 2009 20:05
    Modérateur
  • Bonsoir,

    Je ne trouve pas l'onglet application. Pour rappel je suis sous Visual Studio 2003 donc où puis-je le trouver?

    Désolé pour cette question un peu simpliste.

    Merci d'avance.
    mardi 27 octobre 2009 20:22
  • Tu as aussi une autre possibilité:

    tu ajoute 1 module a ton projet.

    Dans ton module du ajoute le code suivant:

    public sub main
    
    Dim myLoginForm as new FrmLogin
    myLoginForm .ShowDialog
    
    Dim Login As String
    Dim Pass As String
    
    Login = MyLoginForm.MyLoginString
    Pass = MyLoginForm.MyPassString
    
    
    dim myMainForm as new FrmMain(Login, Pass)
    myMainForm .ShowDialog
    
    
    end sub
    
    Et tu remplace dans les propriété du projet l'élément de démarrage par "Sub Main"
    Voila une méthode qui marche aussi.
    • Proposé comme réponse Yannick Lapierre jeudi 29 octobre 2009 13:38
    • Marqué comme réponse Takumii samedi 31 octobre 2009 00:21
    jeudi 29 octobre 2009 13:37
  • Bonne question, je n'ai pas trouvé la réponse sur le net et je n'ai pas la version 2003. Difficile pour l'instant de te donner une réponse présentement...
    Microsoft MVP C# :: mongeon.devrpm.ca
    jeudi 29 octobre 2009 17:04
    Modérateur
  • Bonsoir,

    Bon j'ai opté pour la 2eme solution qui est de crée un module avec Private sub main() et de le mettre en objet de démarrage. Ca marche bien j'ai même ajouté une petite variable globale pour permettre à l'utilisateur de pouvoir revenir à la fenêtre de login selon la valeur de cette variable.

    Merci pour l'aide

    samedi 31 octobre 2009 00:08