Привязка списка к списку <object> - PullRequest
54 голосов
/ 20 апреля 2010

Какой самый простой способ привязать Listbox к списку объектов?

Ответы [ 8 ]

66 голосов
/ 20 апреля 2010

Вы ищете DataSource property:

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

Также следует установить для свойства DisplayMember имя свойства объекта, который высписок для отображения.Если вы этого не сделаете, он позвонит ToString().

16 голосов
/ 20 апреля 2010

Притворяется, что вы выводите список объектов customer со свойствами customerName и customerId:

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

Редактировать: я знаю, что это работает в asp.net - если вы делаете приложение winforms, оно должно быть очень похоже (я надеюсь ...)

13 голосов
/ 18 марта 2013

Привязка System.Windows.Forms.Listbox Элемент управления списком объектов (здесь типа динамического)

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";  
4 голосов
/ 20 апреля 2010

Конечно, это не даст вам ничего действительно значимого, если объекты не переопределены должным образом ToString() (или вы на самом деле не работаете с общим списком объектов и не можете связываться с конкретными полями):

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

// Fill the list

someListBox.DataSource = objList;
1 голос
/ 12 мая 2015

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

Подробные примеры см. В этой статье.

1 голос
/ 20 апреля 2010

Здесь есть два пути nain:

1: listBox1.DataSource = yourList;

Выполните любые манипуляции (Добавить / Удалить) для вашего списка и перепривязки.
Установите DisplayMember и valueMember для управления отображаемым.

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

(или используйте цикл for для Items.Add(...))

Вы можете управлять отображением, перегрузив ToString () объектов списка или реализовав событие listBox1.Format.

0 голосов
/ 19 сентября 2018

Для приложения UWP:

XAML

<ListBox x:Name="List" DisplayMemberPath="Source" ItemsSource="{x:Bind Results}"/>

C #

public ObservableCollection<Type> Results
0 голосов
/ 27 января 2016

Я не видел его здесь, поэтому я публикую его, потому что для меня это лучший способ в winforms:

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

    listBox.DataSource = objList ;

    listBox.Refresh();
    listBox.Update();            
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...