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 :

connexion d'utilisateurs dans une windows form


Sujet :

Windows Forms

  1. #1
    Nouveau membre du Club
    Inscrit en
    Février 2009
    Messages
    55
    Détails du profil
    Informations forums :
    Inscription : Février 2009
    Messages : 55
    Points : 27
    Points
    27
    Par défaut connexion d'utilisateurs dans une windows form
    Bonjour,

    Je débute dans le c# et j'aimerais faire une une application pour pouvoir gérer des comptes, un peu comme dans une banque.

    Pour cela, j'aurais besoin que l'utilisateur se connecte afin de consulter ses comptes un peu comme dans un site avec le login et le mot de passe.

    En fait j'aimerais savoir comment procéder sachant que je suis dans une windows form.

    Merci d'avance pour vos réponse

  2. #2
    Membre émérite

    Homme Profil pro
    Développeur informatique
    Inscrit en
    Novembre 2007
    Messages
    3 387
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 62
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Novembre 2007
    Messages : 3 387
    Points : 2 999
    Points
    2 999
    Par défaut
    Rien de bien compliqué pour ton formulaire ! 2 TextBox pour la saisie des infos, un bouton Valider pour tester la validité.

    Le plus "dur" est de savoir où sont stockées les informations d'authentification. Base de données ? Fichier ? Autre ?

    Ta question est un peu "vague"

  3. #3
    Nouveau membre du Club
    Inscrit en
    Février 2009
    Messages
    55
    Détails du profil
    Informations forums :
    Inscription : Février 2009
    Messages : 55
    Points : 27
    Points
    27
    Par défaut
    voila, je compte créer une base de données avec une table utilisateurs. en fait c'est plus pour les instructions de connexion et de déconnexion, c'est un peu vague pour moi. sinon pour la requete de vérification je pense pouvoir le faire...

    et aussi je voulais savoir s'il existait des champs spéciaux pour les mots de passe?

  4. #4
    Membre émérite

    Homme Profil pro
    Développeur informatique
    Inscrit en
    Novembre 2007
    Messages
    3 387
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 62
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Novembre 2007
    Messages : 3 387
    Points : 2 999
    Points
    2 999
    Par défaut
    ça dépend un peu de la base. Mais tu trouveras plein d'exemples sur le net.

    En voici un pour une base Access:

    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
    using System.Data.OleDb;
    public class Bd
    {
      private System.Data.OleDb.OleDbConnection Connection;
      public void Open(string FileName)
      {
        Connection = new System.Data.OleDb.OleDbConnection();
        Connection.ConnectionString = "Provider=microsoft.jet.oledb.4.0;Data Source=" + FileName + ";";
        Connection.Open();
      }
      public System.Data.DataTable GetTable(string Requete)
      {
        try
        {
          System.Data.DataSet DtSet = new System.Data.DataSet();
          System.Data.OleDb.OleDbDataAdapter AdapTContact = new System.Data.OleDb.OleDbDataAdapter(Requete, Connection);
          AdapTContact.Fill(DtSet, ((char)0).ToString());
          return DtSet.Tables[0];
        }
        catch (Exception Err)
        {
          throw Err;
        }
      }
      public void Close()
      {
        Connection.Close();
        Connection.Dispose();
        Connection = null;
      }
    }
    Example d'utilisation:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    System.Data.DataTable Table;
    Bd Bd = new Bd();
    Bd.Open(@"Chemin\De\Votre\BaseDeDonnee");
    Table = Bd.GetTable("select * from NomDeVotreTable");
    Bd.Close();

  5. #5
    Nouveau membre du Club
    Inscrit en
    Février 2009
    Messages
    55
    Détails du profil
    Informations forums :
    Inscription : Février 2009
    Messages : 55
    Points : 27
    Points
    27
    Par défaut
    merci beaucoup. désolé je vais mieux m'expliquer

    bon alors je vais créer une base dans sql server 2005.

    j'aimerais que quand l'application s'ouvre, l'utilisateur tombe directement sur la page de connexion.
    une fois la vérification faite, j'aimerais que la windows form se ferme pour en ouvrir une autre avec toutes les données relatives à son compte et avec inscrit en haut de la windows form le nom et le prénom de l'utilisateur ainsi qu'un bouton déconnexion.
    Ensuite quand l'utilisateur de déconnecte j'aimerais que la form se ferme et que la page de connexion apparaisse.

    en gros je pense que c'est comme les sessions en php. mais je ne sais pas comment faire en c#

    j'espère avoir été plus claire...

  6. #6
    Membre émérite

    Homme Profil pro
    Développeur informatique
    Inscrit en
    Novembre 2007
    Messages
    3 387
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 62
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Novembre 2007
    Messages : 3 387
    Points : 2 999
    Points
    2 999
    Par défaut
    2 formulaires et une classe:

    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
     
    public class UserInfo
    {        
        public string Nom { get; set; }
        public string MotDePasse { get; set; }
        public bool Valide { get; set; }
     
        static UserInfo user;
     
        public static UserInfo User()
        {
            if (user == null)
            {
                user = new UserInfo();
            }
            return user;
        }
    }
    Le formulaire de connexion:
    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
     
    using System;
    using System.Windows.Forms;
     
    namespace Sas
    {
        public partial class Connexion : Form
        {
            public Connexion()
            {
                InitializeComponent();
            }
     
            private void button1_Click(object sender, EventArgs e)
            {
                UserInfo.User().Nom = textBox1.Text;
                UserInfo.User().MotDePasse = textBox2.Text;
                UserInfo.User().Valide = true;
                Close();
            }
        }
    }
    Le formulaire principal:
    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
     
    using System.Windows.Forms;
     
    namespace Sas
    {
        public partial class Principal : Form
        {
            public Principal()
            {
                InitializeComponent();
            }
     
            private void Principal_Shown(object sender, EventArgs e)
            {
                Text = UserInfo.User().Nom;
            }
        }
    }
    Et la procédure Main qui va bien:

    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);
     
        Application.Run(new Connexion());
        if (UserInfo.User().Valide)
        {
            Application.Run(new Principal());
        }
    }
    J'ai fais très light. Il faudrait faire mieux mais ça fonctionne

  7. #7
    Nouveau membre du Club
    Inscrit en
    Février 2009
    Messages
    55
    Détails du profil
    Informations forums :
    Inscription : Février 2009
    Messages : 55
    Points : 27
    Points
    27
    Par défaut
    merci beaucoup, c'est très gentil. je vais tester ça...

    par contre je voulais savoir, pour la déconnexion j'ai rien besoin de faire? enfin je veux dire, je fais en sorte que ça m'envoi sur la page de connexion et donc quand je me reconnecte le nom aura changé?

  8. #8
    Membre émérite

    Homme Profil pro
    Développeur informatique
    Inscrit en
    Novembre 2007
    Messages
    3 387
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 62
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Novembre 2007
    Messages : 3 387
    Points : 2 999
    Points
    2 999
    Par défaut
    Pour la reconnexion, je te conseille un truc tout simple que j'utilise dans un soft: Application.Restart()

  9. #9
    Nouveau membre du Club
    Inscrit en
    Février 2009
    Messages
    55
    Détails du profil
    Informations forums :
    Inscription : Février 2009
    Messages : 55
    Points : 27
    Points
    27
    Par défaut
    Donc en faite si j'ai bien compris, quand je clique sur le bouton déconnexion j'appelle Application.Restart() ?

    sinon pour les get et set je ne comprends pas trop à quoi ils servent et pourquoi tu mets
    static UserInfo user;
    dans la class UserInfo.

  10. #10
    Membre émérite

    Homme Profil pro
    Développeur informatique
    Inscrit en
    Novembre 2007
    Messages
    3 387
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 62
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Novembre 2007
    Messages : 3 387
    Points : 2 999
    Points
    2 999
    Par défaut
    Application.Restart() va fermer ton application et la redémarrer. Du coup, tu vas retrouver tout ton code initialisé et l'affichage de la fenètre éxécutée en premier dans la méthode Main. On peut gérer ça autrement mais c'est à mon avis le plus simple, surtout pour débuter.

    Les get et set servent à définir chaque élément comme une propriété. La version 3.0 de C# permet de ne pas définir de variables privées pour une propriété. L'ancienne formule était:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
     
            private string nom;
            public int Nom 
            {
                get
                {
                    return nom;
                }
                set
                {
                    nom = value;
                }
            }
    Définir la variable privée user en static permet d'y accéder la méthode

    public static UserInfo User()


    Là encore, je suis allé au plus vite. Il y a bien d'autres façons de gérer le problème. L'idéal je pense aurait été de créer une classe qui gère l'utilisateur connecté. Avoir mis une propriété Valide dans la classe UserInfo est un raccourci qui va en faire hurler plus d'un ici . Avec le temps tu devrais vite trouver de meilleures solutions. Si tu as besoin d'un exemple sur une autre façon de gérer le problème, je peux regarder ça.

  11. #11
    Nouveau membre du Club
    Inscrit en
    Février 2009
    Messages
    55
    Détails du profil
    Informations forums :
    Inscription : Février 2009
    Messages : 55
    Points : 27
    Points
    27
    Par défaut
    Merci pour toutes tes réponses.

    Le problème c'est que j'ai vraiment beaucoup de mal avec la programmation objet, donc je ne comprends pas tout
    C'est un projet que je dois faire pour présenter au BTS et que j'aimerais faire en objet...

    Je pense que je vais utiliser Application.Restart() c'est sur que se sera plus simple.
    Mais j'avoue que j'ai du mal à comprendre ton code. Est-ce que tu pourrais me montrer un exemple ? ça m'aidera peut-être à mieux comprendre.
    encore merci

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

Discussions similaires

  1. instancier une classe non managée dans une Windows Form
    Par maestro_mirou dans le forum C++/CLI
    Réponses: 2
    Dernier message: 07/05/2012, 14h09
  2. [SdlDotNet] Mettre le rendu dans une Windows Forms
    Par Invité dans le forum Développement 2D, 3D et Jeux
    Réponses: 1
    Dernier message: 19/12/2010, 16h38
  3. Touche ESCAPE dans une Windows.Form
    Par tchoimars dans le forum Windows Forms
    Réponses: 2
    Dernier message: 13/02/2008, 11h04
  4. [C#] utilisation de la souris dans une windows form
    Par dimmak dans le forum Windows Forms
    Réponses: 2
    Dernier message: 26/03/2006, 23h21

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