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 :

Utiliser la méthode LIST.FIND()


Sujet :

Windows Forms

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre très actif
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Décembre 2003
    Messages
    274
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 45
    Localisation : Luxembourg

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Décembre 2003
    Messages : 274
    Par défaut Utiliser la méthode LIST.FIND()
    Bonjour à toutes et à tous,

    Voici mon soucis :

    - je possède une classe nommée ClassePersonne
    - j'ai une liste de personne LIST<>

    =>
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
            private List<ClassePersonne> ListeContact;
            private ClassePersonne Personne = new ClassePersonne();
    Dans mon code, j'intercepte l'évènement CLIC dans une listbox lstPersonne.
    Je souhaite dès lors rechercher dans ma liste ListeContact, la personne qui a pour Personne.NOM + " " + Personne.PRENOM l'identique à celui choisi dans ma liste lstPersonne.

    Jai tenté d'utiliser la fonction LIST.FIND() avec divers exemples que j'ai trouvé sur le net mais rien n'y fait.

    http://www.c-sharpcorner.com/UploadF...b-2d2c59a17d36
    http://www.thescripts.com/forum/thread474304.html

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
            private void lstPersonne_SelectedIndexChanged(object sender, EventArgs e)
            {            
             ucInfoPersonne.AfficherPersonne( ListeContact.Find(delegate(ClassePersonne p){Convert.ToString(p.NOM + " " + p.PRENOM).Trim() == lstPersonne.SelectedItem.ToString();}) );
            }
    En espérant trouver une solution à mon problème, je vous dit déjà merci à l'avance

    Si vous avez le courage , voici mon code en entier :

    NB : Chargement() est lancée lors d'un clic sur un BOUTON.
    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
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    99
    100
    101
    102
    103
    104
    105
    106
    107
    108
    109
    110
    111
    112
    113
    114
    115
    116
    117
    118
    119
    120
    121
    122
    123
     
    public partial class frmGestionErreurs : Form
        {
            // champs
            string maRequeteSQL = "";
            string monChamp = "";
     
            private List<ClassePersonne> ListeContact;
            private ClasseODBC odbc = new ClasseODBC();
            private ClassePersonne Personne = new ClassePersonne();
     
            // constructeur
            public frmGestionErreurs()
            {
                InitializeComponent();
                // création d'une liste de personnes
                ListeContact = new List<ClassePersonne>();
            }
     
            // charge la lst
            private void Chargement(ListBox listeConcernee)
            {
                listeConcernee.Items.Clear();
     
                if (odbc.OuvrirConnexion())
                {
                    DataTable maTable = odbc.laTableRenvoyee(maRequeteSQL);
     
                    // recherche des données
                    foreach (DataRow row in maTable.Rows)
                    {
                        listeConcernee.Items.Add(row[0].ToString());
                    }
     
                    // fermeture de la connexion
                    if (!odbc.FermerConnexion())
                    {
                        MessageBox.Show("Impossible de se déconnecter de la base de données.", "Erreur de fermeture de la connexion", MessageBoxButtons.OK, MessageBoxIcon.Error);
                    }
                }
                else
                {
                    MessageBox.Show("Impossible de se connecter à la base de données.", "Erreur de connexion", MessageBoxButtons.OK, MessageBoxIcon.Error);
                }
            }
     
            // Gestion des listes
            private void lstErreur_SelectedIndexChanged(object sender, EventArgs e)
            {
                // on nettoye la liste
                lstPersonne.Items.Clear();
     
                maRequeteSQL = "SELECT * FROM t_info WHERE " + monChamp + " LIKE '%" + lstErreur.SelectedItem.ToString() + "%'";
                if (odbc.OuvrirConnexion())
                {
                    DataTable maTable = odbc.laTableRenvoyee(maRequeteSQL);
     
                    /* on crée une classe Personne qui va récupérer les infos
                     * pour ensuite ajouter cette classe dans notre liste de classe
                     */
     
                    // recherche des données
                    foreach (DataRow row in maTable.Rows)
                    {
                        Personne.NOM = row["nom"].ToString();
                        Personne.ADRESSE = row["adresse"].ToString();
                        Personne.SEXE = row["sexe"].ToString();
                        Personne.CARTEIDENTITE = row["carte_identite"].ToString();
                        Personne.CODEPOSTAL = Int32.Parse(row["cp"].ToString());
                        Personne.CONJOINT = row["conjoint"].ToString();
                        Personne.ETATCIVIL = row["civil"].ToString();
                        Personne.LIEUNAISSANCE = row["lieu_naiss"].ToString();
                        Personne.LOCALITE = row["localite"].ToString();
                        Personne.NATIONALITE = row["nationalite"].ToString();
                        Personne.PARENTTUTEUR = row["parent_tuteur"].ToString();
                        Personne.PROFESSION = row["profession"].ToString();
                        // TODO gérer le prénom d'une personne
                        //Personne.PRENOM = row[""].ToString();
     
                        // TODO modifier la condition if car la date de naissance peut aussi être 01-01-0...
                        //if (row["naiss"].ToString() == "00-00-0000")
                        //{
                            // TODO choisir une action pour la date de naissance.
                            Personne.DATENAISSANCE = DateTime.Now;
                        //}
                        //else
                        //{
                        //    Personne.DATENAISSANCE = Convert.ToDateTime(row["naiss"].ToString());
                        //}
                            try
                            {
                                Personne.DATENAISSANCE = Convert.ToDateTime(row["naiss"].ToString());
                            }
                            catch
                            {
                                Personne.DATENAISSANCE = DateTime.Now;
                            }
     
                        // Ajouter la personne à la liste
                        ListeContact.Add(Personne);
     
                        // ajouter la personne à la liste
                        lstPersonne.Items.Add(Convert.ToString(Personne.NOM + " " + Personne.PRENOM).Trim());
                    }
     
     
                    // fermeture de la connexion
                    if (!odbc.FermerConnexion())
                    {
                        MessageBox.Show("Impossible de se déconnecter de la base de données.", "Erreur de fermeture de la connexion", MessageBoxButtons.OK, MessageBoxIcon.Error);
                    }
                }
                else
                {
                    MessageBox.Show("Impossible de se connecter à la base de données.", "Erreur de connexion", MessageBoxButtons.OK, MessageBoxIcon.Error);
                }
            }
     
            private void lstPersonne_SelectedIndexChanged(object sender, EventArgs e)
            {
                ucInfoPersonne.AfficherPersonne( ListeContact.Find(delegate(ClassePersonne p){Convert.ToString(p.NOM + " " + p.PRENOM).Trim() == lstPersonne.SelectedItem.ToString();}) );
            }
        }

  2. #2
    Rédacteur
    Avatar de Thomas Lebrun
    Profil pro
    Inscrit en
    Octobre 2002
    Messages
    9 161
    Détails du profil
    Informations personnelles :
    Âge : 43
    Localisation : France

    Informations forums :
    Inscription : Octobre 2002
    Messages : 9 161
    Par défaut
    OK mais quel est le problème avec ton code ? Cela ne marche pas ? As-tu essayé de voir ce qu'il y a vait dans lstPersonne.SelectedItem ?

  3. #3
    Membre émérite
    Avatar de shwin
    Profil pro
    Inscrit en
    Novembre 2003
    Messages
    568
    Détails du profil
    Informations personnelles :
    Localisation : Canada

    Informations forums :
    Inscription : Novembre 2003
    Messages : 568
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     private void lstPersonne_SelectedIndexChanged(object sender, EventArgs e)
            {            
             ucInfoPersonne.AfficherPersonne( ListeContact.Find(delegate(ClassePersonne p){ return Convert.ToString(p.NOM + " " + p.PRENOM).Trim() == lstPersonne.SelectedItem.ToString();}) );
            }
    Ta seulement oublier de mettre le keyword return dans ton delegate

  4. #4
    Membre très actif
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Décembre 2003
    Messages
    274
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 45
    Localisation : Luxembourg

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Décembre 2003
    Messages : 274
    Par défaut
    Bonjour,

    En effet, j'avais oublié de mettre le return dans le délégué .... inattention ... lol

    Seulement je ne comprends pas pourquoi mon SelectedItem est vide lors du clic ...

  5. #5
    Membre très actif
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Décembre 2003
    Messages
    274
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 45
    Localisation : Luxembourg

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Décembre 2003
    Messages : 274
    Par défaut
    Rectification,

    Apparemment, ma LISTE est mal construite car elle contient uniquement la même personne X fois ....

    Une idée ?

  6. #6
    Membre expérimenté
    Avatar de StormimOn
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Mai 2005
    Messages
    2 593
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : France, Sarthe (Pays de la Loire)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mai 2005
    Messages : 2 593
    Par défaut
    Tu crées une seule instance de la classe Personne avec le code que tu montres, alors que tu dois créer une instance par personne

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

Discussions similaires

  1. Réponses: 15
    Dernier message: 17/05/2011, 07h58
  2. Fuite de mémoire en utilisant le template list
    Par schtroumpf_farceur dans le forum Langage
    Réponses: 9
    Dernier message: 18/07/2005, 20h44
  3. utiliser une méthode en callback
    Par inertia dans le forum MFC
    Réponses: 3
    Dernier message: 23/06/2005, 17h56
  4. Utiliser les méthodes des boutons crées en rafale.
    Par kabouns dans le forum Composants
    Réponses: 8
    Dernier message: 03/12/2004, 10h48
  5. Formulaire utilisant la méthode POST + popup
    Par Hell dans le forum Balisage (X)HTML et validation W3C
    Réponses: 5
    Dernier message: 27/10/2004, 13h34

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