A List<>
chỉ đơn giản là một mảng tự động thay đổi kích thước, gồm các mục của một kiểu nhất định, với một vài hàm trợ giúp (ví dụ: sắp xếp). Đó chỉ là dữ liệu và bạn có thể sử dụng nó để chạy các hoạt động trên một tập hợp các đối tượng trong mô hình của mình.
A BindingList<>
là một trình bao bọc xung quanh một danh sách đã nhập hoặc một tập hợp, thực thi IBindingList
giao diện. Đây là một trong những giao diện tiêu chuẩn hỗ trợ kết hợp dữ liệu hai chiều. Nó hoạt động bằng cách triển khai ListChanged
sự kiện, sự kiện này sẽ được nâng lên khi bạn thêm, xóa hoặc đặt các mục. Các điều khiển liên kết lắng nghe sự kiện này để biết khi nào cần làm mới màn hình của chúng.
Khi bạn đặt DataSource của BindingSource thành a List<>
, nội bộ nó sẽ tạo một BindingList<>
để bao bọc danh sách của bạn. Bạn có thể muốn BindingList<>
tự mình gói trước danh sách của mình nếu bạn muốn truy cập nó bên ngoài BindingSource, nhưng nếu không thì nó giống nhau. Bạn cũng có thể kế thừa từ BindingList<>
để thực hiện hành vi đặc biệt khi thay đổi các mục.
IEditableObject
được xử lý bởi BindingSource. Nó sẽ gọi BeginEdit trên bất kỳ đối tượng triển khai nào khi bạn thay đổi dữ liệu trong bất kỳ điều khiển ràng buộc nào. Sau đó, bạn có thể gọi EndEdit / CancelEdit trên BindingSource và nó sẽ chuyển nó đến đối tượng của bạn. Di chuyển đến một hàng khác cũng sẽ gọi EndEdit.