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 :

Datasource et listbox


Sujet :

Windows Forms

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre Expert

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

    Informations professionnelles :
    Activité : Retraité

    Informations forums :
    Inscription : Novembre 2007
    Messages : 3 530
    Par défaut Datasource et listbox
    Bonjour,

    Je suis un peu perdu. Voilà un code exemple qui ne fonctionne pas:

    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
     
    using System;
    using System.Collections.Generic;
    using System.ComponentModel;
    using System.Windows.Forms;
     
    namespace Telerik
    {
        public partial class Form1 : Form
        {
     
            private List<Personne> Personnes = new List<Personne>();
     
            public Form1()
            {
                InitializeComponent();
            }
     
            private void Form1_Load(object sender, EventArgs e)
            {
                Personnes.Add(new Personne("Pierre", 1));
                Personnes.Add(new Personne("Paul", 2));
                Personnes.Add(new Personne("Jacques", 3));
     
                ElementList.ValueMember = "ID";
                ElementList.DisplayMember = "Nom";
                ElementList.DataSource = Personnes;
            }
     
            private void ElementList_SelectedValueChanged(object sender, EventArgs e)
            {
                propertyGrid1.SelectedObject = ElementList.SelectedItem;
            }
     
            private void button1_Click(object sender, EventArgs e)
            {
                Personnes.Add(new Personne("Nicolas", 4));
                MessageBox.Show(Personnes.Count.ToString());
            }
     
        }
     
        public class Personne
        {
            private string _Nom;
     
            [Browsable(false)]
            public int ID { get; set; }
     
            public int Age { get; set; }
     
            public string Nom 
            {
                get { return _Nom; }
                set { _Nom = value;}
            }
     
            public Personne(string nom, int id)
            {
                Nom = nom;
                ID = id;
            }
     
            public override string ToString()
            {
                return Nom;
            }
        }
     
    }
    Donc, sur le button1_Click, j'ajoute un objet à ma liste Personnes mais il n'apparait pas dans la listbox. Pourtant, la ligne

    MessageBox.Show(Personnes.Count.ToString());

    affiche bien 4 éléments.

    Que dois-je faire pour que chaque ajout soit pris en compte dans la List<> ET dans la listbox ?

    J-L

  2. #2
    Membre émérite
    Inscrit en
    Octobre 2006
    Messages
    587
    Détails du profil
    Informations personnelles :
    Âge : 38

    Informations forums :
    Inscription : Octobre 2006
    Messages : 587
    Par défaut
    La propriété ValueMember désigne la propriété du contrôle de la listBox. Mets "Items" a la place de "Nom".

  3. #3
    Membre Expert

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

    Informations professionnelles :
    Activité : Retraité

    Informations forums :
    Inscription : Novembre 2007
    Messages : 3 530
    Par défaut
    La propriété ValueMember désigne la propriété du contrôle de la listBox. Mets "Items" a la place de "Nom".
    euh ... à ValueMember, j'assignais ID pour le nom de la clé, pas Nom.

    ElementList.ValueMember = "ID";
    ElementList.DisplayMember = "Nom";

    J'ai essayé les 2 combinaisons:

    ElementList.ValueMember = "Items";
    ElementList.DisplayMember = "Nom";

    et

    ElementList.ValueMember = "ID";
    ElementList.DisplayMember = "Items";

    mais ça ne change rien. Le seul moyen que j'ai trouvé jusque là est de faire

    ElementList.DataSource = null;
    ElementList.DataSource = Personnes;

    Là, la listbox présente bien le nouvel objet. Mais ça me semble un peu lourd.

  4. #4
    Membre émérite
    Inscrit en
    Octobre 2006
    Messages
    587
    Détails du profil
    Informations personnelles :
    Âge : 38

    Informations forums :
    Inscription : Octobre 2006
    Messages : 587
    Par défaut
    Oublie ce que j'ai dit avant c'est n'importe quoi.

Discussions similaires

  1. listBox.datasource avec 2 DisplayMember
    Par lorine dans le forum C#
    Réponses: 2
    Dernier message: 12/11/2009, 14h34
  2. Principe du DataSource sur un listbox
    Par Papy214 dans le forum Windows Forms
    Réponses: 4
    Dernier message: 30/05/2008, 16h33
  3. listbox datasource refresh
    Par Net dans le forum Windows Forms
    Réponses: 4
    Dernier message: 27/02/2008, 20h06
  4. DrawItem d'un listbox...
    Par scorpiwolf dans le forum C++Builder
    Réponses: 5
    Dernier message: 22/06/2007, 15h50
  5. [Listbox] ScrollBar Horizontal
    Par haleem dans le forum VB 6 et antérieur
    Réponses: 4
    Dernier message: 20/04/2005, 07h53

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