web-dev-qa-db-fra.com

Liaison Listbox to List <objet>

Quel est le moyen le plus simple de lier une zone de liste à une liste d'objets?

54
cam

Vous recherchez le DataSource property :

List<SomeType> someList = ...;
myListBox.DataSource = someList;

Vous devez également définir la propriété DisplayMember sur le nom d'une propriété de l'objet que vous souhaitez afficher dans la liste. Si vous ne le faites pas, il appellera ToString().

66
SLaks

En prétendant que vous affichez une liste d'objets client avec les propriétés "customerName" et "customerId":

listBox.DataSource = customerListObject;
listBox.DataTextField = "customerName";
listBox.DataValueField = "customerId";
listBox.DataBind();

Edit: Je sais que cela fonctionne dans asp.net - si vous faites une application winforms, il devrait être assez similaire (j'espère ...)

16
Ray

Liaison a System.Windows.Forms.Listbox Control à une liste d'objets (ici de type dynamique)

List<dynamic> dynList = new List<dynamic>() { 
            new {Id = 1, Name = "Elevator", Company="Vertical Pop" },
            new {Id = 2, Name = "Stairs", Company="Fitness" }
};

listBox.DataSource = dynList; 
listBox.DisplayMember = "Name";
listBox.ValueMember = "Id";  
13
surfmuggle

Certes, cela ne vous apportera rien de vraiment significatif si les objets ne sont pas correctement surchargés avec ToString() (ou si vous ne travaillez pas vraiment avec une liste générique d'objets et pouvez être liés à des champs spécifiques):

List<object> objList = new List<object>();

// Fill the list

someListBox.DataSource = objList;
4
Justin Niessner

Il y a deux routes principales ici:

1: listBox1.DataSource = yourList;

Faites n'importe quelle manipulation (Ajouter/Supprimer) à votre liste et à la relier.
Configurez DisplayMember et valueMember pour contrôler ce qui est affiché.

2: lsitBox1.Items.AddRange(yourList.ToArray());

(ou utilisez une boucle for pour faire Items.Add(...))

Vous pouvez contrôler l'affichage en surchargeant ToString () des objets de liste ou en implémentant l'événement listBox1.Format.

1
Henk Holterman

ListBox1.DataSource = CreateDataSource();
ListBox1.DataTextField = "FieldProperty";
ListBox1.DataValueField = "ValueProperty";

Veuillez vous référer à this article pour des exemples détaillés.

1
Maddie

Je ne l’ai pas vue ici, je la poste donc car c’est le meilleur moyen de gagner des winforms:

    List<object> objList = new List<object>();

    listBox.DataSource = objList ;

    listBox.Refresh();
    listBox.Update();            
0
paulofer85