Quel est le moyen le plus simple de lier une zone de liste à une liste d'objets?
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()
.
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 ...)
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";
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;
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.
ListBox1.DataSource = CreateDataSource();
ListBox1.DataTextField = "FieldProperty";
ListBox1.DataValueField = "ValueProperty";
Veuillez vous référer à this article pour des exemples détaillés.
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();