Tôi đang viết một ứng dụng Windows và sử dụng một điều khiển Listbox. Tôi đang phát triển với Visual Studio C# 2008 Express Edition.Vấn đề kỳ lạ với ListBox.DataSource
Tôi đã có một đối tượng dữ liệu mà trông giống như sau
public class RootObject
{
public List<SubObject> MySubObjects{ get; set;}
}
Tôi đã có một ListBox vào mẫu của tôi, và cũng là một tài sản "MyRootObject" mà, rõ ràng, nắm giữ một RootObject. Khi điều khiển được khởi tạo, tôi đã đặt:
_listBox.DataSource = MyRootObject.MySubObjects;
Bây giờ, khi biểu mẫu tải, tôi gỡ lỗi và thấy rằng DataSource đang được đặt chính xác. Nhưng không có gì được hiển thị. Tôi đã ghi đè lên phương thức ToString() của SubObject và nó thậm chí không được gọi. Tôi đã thử đặt _listBox.DisplayMember thành thuộc tính của SubObject chỉ để xem có vấn đề gì ở đó không, nhưng vẫn không có gì. Tôi đã thử gọi _listBox.Update() và _listBox.Refresh() sau khi thiết lập DataSource, nhưng vẫn không có tình yêu. DataSource có tất cả dữ liệu ... nó chỉ từ chối hiển thị nó.
Vì vậy, trong khi gỡ lỗi, tôi tự hỏi WTF và tôi quyết định chỉ làm đủ
_listBox.DataSource = new List<SubObject>{ new SubObject(), new SubObject() };
Chắc chắn, điều này làm việc, và tôi thấy hai điều được liệt kê trong hộp danh sách của tôi.
Vì vậy, sau đó, thực sự tò mò, tôi quyết định thử sao chép danh sách các đối tượng và đưa rằng trong hộp danh sách, như vậy:
_listBox.DataSource = MyRootObject.MySubObjects.ToArray();
này hoạt động! Và đó là một giải pháp cho vấn đề của tôi bây giờ ... nhưng một điều rất khó chịu. Có ai biết tại sao tôi cần phải về cơ bản sao chép danh sách các đối tượng như thế này để có được nó để làm việc, hơn là chỉ cần thiết lập _listBox.DataSource = MyRootObject.MySubObjects; ? Một lần nữa, DataSource có tất cả các dữ liệu đúng theo cách sau khi thiết lập nó ... nó chỉ là khi nó được sao chép dữ liệu, nó thực sự hiển thị, và khi nó không, nó không được hiển thị.
Tôi có vấn đề này giống nhau, và trang này nói rằng Danh sách KHÔNG thực hiện IList cũng như IList : https://social.msdn.microsoft.com/Forums/vstudio/en- US/a58e4f37-4abd-4eff-820e-33d09a7a432d/net-lớp-mà-thực hiện-ilist? Diễn đàn = netfxbcl –