2010-04-20 36 views
46

Cách đơn giản nhất để liên kết Hộp danh sách với Danh sách đối tượng là gì?Hộp danh sách ràng buộc vào danh sách <object>

+8

nền tảng của bạn là gì? silverlight? WPF? Winforms? ASP.NET? câu trả lời kinda phụ thuộc vào kiến ​​thức này. –

Trả lời

56

Bạn đang tìm kiếm DataSource property:

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

Bạn cũng nên thiết lập các DisplayMember tài sản để tên của một tài sản trong đối tượng mà bạn muốn ListBox để hiển thị. Nếu không, nó sẽ gọi ToString().

+0

Làm cách nào để tôi xóa một mục của SomeType khỏi Hộp danh sách qua lựa chọn? – cam

+0

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

+5

Xin chào. Nó làm việc cho tôi miễn là tôi không thêm gì vào bộ sưu tập. Ngay sau khi tôi thay đổi các mục bộ sưu tập của tôi trong hộp danh sách không cập nhật. Ngay cả sau khi gán dataSource sau khi chaning các mục trong bộ sưu tập. – Hooch

4

Cấp, điều này sẽ không cung cấp cho bạn bất cứ điều gì thực sự có ý nghĩa trừ khi các đối tượng đã overriden đúng ToString() (hoặc bạn đang không thực sự làm việc với một danh sách chung của các đối tượng và có thể liên kết với các lĩnh vực cụ thể):

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

// Fill the list 

someListBox.DataSource = objList; 
14

Giả vờ bạn đang hiển thị một danh sách các đối tượng khách hàng với "CUSTOMERNAME" và "ID khách hàng" thuộc tính:

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

chỉnh sửa: tôi biết điều này trong asp.net - nếu bạn đang làm một ứng dụng winforms, nó nên khá giống nhau (tôi hy vọng ...)

+1

Windows.Forms.Listbox có các thành viên khác; xem bên dưới. – surfmuggle

1

Có hai tuyến đường Nain đây:

1: listBox1.DataSource = yourList;

làm bất kỳ thao tác (Add/Delete) để yourList và REBIND.
Đặt DisplayMember và valueMember để kiểm soát nội dung được hiển thị.

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

(hoặc sử dụng một cho vòng lặp để làm Items.Add(...))

Bạn có thể kiểm soát hiển thị do quá tải ToString() của đối tượng danh sách hoặc bằng cách thực hiện các sự kiện listBox1.Format.

11

Ràng buộc một Control System.Windows.Forms.Listbox vào một danh sách các đối tượng (ở đây loại động)

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";

Vui lòng tham khảo this bài viết cho ví dụ cụ thể.

0

tôi thiên đường 't nhìn thấy nó ở đây vì vậy tôi đăng nó bởi vì đối với tôi là cách tốt nhất trong winforms:

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

    listBox.DataSource = objList ; 

    listBox.Refresh(); 
    listBox.Update();    
Các vấn đề liên quan