Mon bool ne change pas de valeur, et l'ajouter d'un élément est infructueux
Hamster18
Messages postés
176
Date d'inscription
Statut
Membre
Dernière intervention
-
Hamster18 Messages postés 176 Date d'inscription Statut Membre Dernière intervention -
Hamster18 Messages postés 176 Date d'inscription Statut Membre Dernière intervention -
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 :
La liste d'utilisateur
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:
- Mon bool ne change pas de valeur, et l'ajouter d'un élément est infructueux
- Changer de dns - Guide
- Impossible d'ajouter un ami sur facebook - Guide
- Ajouter un compte whatsapp - Guide
- Ajouter un compte facebook - Guide
- Ajouter signature word - Guide
1 réponse
Dans ton code, tu as :
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 ?
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 ?
Hamster18
Messages postés
176
Date d'inscription
Statut
Membre
Dernière intervention
oui j'ai mit plusieurs point d'arrêt et au moment ou le bool devrait changer bin il change pas