Mon bool ne change pas de valeur, et l'ajouter d'un élément est infructueux

Fermé
Hamster18 Messages postés 178 Date d'inscription mercredi 2 janvier 2019 Statut Membre Dernière intervention 22 janvier 2024 - 8 juin 2019 à 19:51
Hamster18 Messages postés 178 Date d'inscription mercredi 2 janvier 2019 Statut Membre Dernière intervention 22 janvier 2024 - 8 juin 2019 à 20:59
Bonjour j'essaye de mettre en place des utilisateurs, pour cela j'ai une classe Utilisateur, et dans cette classe une ObservableCollection d'utilisateur, pour me connecter je recherche dans cette liste et si l'utilisateur est trouver, je veux changer l'état du bool de connexion. Cependant je n'y arrive pas et ne vois pas la raison. De même j'ai voulus tenter un ajout d'utilisateur cependant, de la même manière cela ne fonctionne pas. Pourriez vous m'en expliquer la raison ?
Merci d'avance pour vos réponses.

Un utilisateur est :


        private bool conEtat;
        private bool ConEtat
        {         
                get
            {
                    return conEtat;
                }
                set
            {
                    conEtat = value;
                    OnPropertyChanged("ConEtat");
                }
           }
        
//J'ai mit mon ConEtat OnPropertyChanged pour être sur que l'erreur au niveau du bool, la valeur pouvais changer

        public Utilisateur(string nom, string prenom, string identifiant, string motDePasse, int age, bool conEtat)
        {
            this.Nom = nom;
            this.Prenom = prenom;
            this.Identifiant = identifiant;
            this.MotDePasse = motDePasse;
            this.Age = age;
            this.ConEtat = conEtat;
            //Un état de connexion est à false si l'utilisateur n'est pas connecter
        }




       public int VerifConnection(string identifiant, string motDePasse)
        {
            for (int i = 0; i < ListUtilisateur.Count(); i++)
            {
                if (ListUtilisateur[i].Identifiant == identifiant && ListUtilisateur[i].MotDePasse == motDePasse)
                {
                    if (ListUtilisateur[i].ConEtat == false)
                    {
                        ListUtilisateur[i].ConEtat= true;
// le bool que je cherche à modifier la valeur, true = connecter, false= deconnecter
                        return 0;
                    }
                }

            }
            return 1;
        }

La liste d'utilisateur

        public ObservableCollection<Utilisateur> ListUtilisateur { get; } =new ObservableCollection<Utilisateur>(){

                new Utilisateur ("Dragnir", "Natsu", "chasseur", "chasseur", 18, false),
                new Utilisateur ("Artfilia", "Lucy", "esprit", "esprit", 19, false)
};
        




        public Utilisateur Utilisateur2 { get; set; }


        private void Connecter_Click(object sender, RoutedEventArgs e)
        {

            Utilisateur2 = new Utilisateur (myValueNom(), myValuePrenom(), myValueIdentifiant(), myValueMotDePasse(), myValueAge(), false );
            Utilisateur2.ListUtilisateur.Add(Utilisateur2);
            int v = Utilisateur2.ListUtilisateur.Count;
//ce int sert seulement à vérifier le nombre d'utilisateur dans une liste
            var w = new MainWindow();
            w.Show();
            this.Close();

            Manager.SauvegardeListeUtilisateur(Utilisateur2.ListUtilisateur);

        }

A voir également:

1 réponse

NHenry Messages postés 15113 Date d'inscription vendredi 14 mars 2003 Statut Modérateur Dernière intervention 22 avril 2024 331
8 juin 2019 à 20:44
Dans ton code, tu as :
        private bool conEtat;
        private bool ConEtat{...}
...
public Utilisateur(string nom, string prenom, string identifiant, string motDePasse, int age, bool conEtat) 


Dans ton constructeur, conEtat c'est la variable d'objet ou le paramètre ?
Le compilateur ne peut pas forcément deviner ...

Nommes différemment tes variables/paramètres pour éviter tout risque de confusion.


A la place de :
for (int i = 0; i < ListUtilisateur.Count(); i++)
Préfères (sauf si l'indice est vraiment nécessaire, ce qui n'est pas le cas ici) :
foreach (var lUtilisateur in ListUtilisateur)
Aussi, dans ton for, la condition est évaluée à chaque tout, donc si tu as 100 tours, le .Count est recalculé 100 fois, prends l'habitude de stocker cette valeur en local.


As-tu essayer de regarder le comportement de l'application en pas à pas sur la ligne problématique ?
0
Hamster18 Messages postés 178 Date d'inscription mercredi 2 janvier 2019 Statut Membre Dernière intervention 22 janvier 2024
8 juin 2019 à 20:59
oui j'ai mit plusieurs point d'arrêt et au moment ou le bool devrait changer bin il change pas
0