2010-04-20 4 views

ответ

56

Вы ищете DataSource property:

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

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

+0

Как я могу удалить элемент SomeType из списка через выбор? – cam

+0

'someList.Remove ((SomeType) myListBox.SelectedValue);' (In WinForms) – SLaks

+5

Здравствуйте. Он работает для меня, пока я ничего не добавляю в коллекцию. Как только я изменю элементы коллекции, в списке не обновляется. Даже после назначения dataSource после извлечения элементов в коллекции. – Hooch

4

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

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

// Fill the list 

someListBox.DataSource = objList; 
14

Pretending вы отображения списка объектов клиента с «CUSTOMERNAME» и «CUSTOMERID» свойства:

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

Edit: Я знаю, что это работает в asp.net - если вы делаете приложение WinForms, он должен быть очень похожим (надеюсь ...)

+1

В Windows.Forms.Listbox есть другие члены; Смотри ниже. – surfmuggle

1

Есть два Нэйн маршруты здесь:

1: listBox1.DataSource = yourList;

делать какие-либо манипуляции (Добавить/Удалить) в yourList и Пересвяжите.
Установите DisplayMember и значениеMember, чтобы контролировать отображаемое.

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

(или использовать для цикла, чтобы сделать Items.Add(...))

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

11

Привязка 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"; 
1

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

Пожалуйста, обратитесь к this статье подробных примеров.

0

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

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

    listBox.DataSource = objList ; 

    listBox.Refresh(); 
    listBox.Update();    
Смежные вопросы