2010-01-04 3 views
8

Tôi cần Bộ sưu tập .net có các sự kiện Thêm và Xoá. Có phiên bản premade nào đó không?Có phiên bản Danh sách có sự kiện Thêm và Xóa

Ví dụ: tôi sẽ cập nhật một số bộ đếm nội bộ khi người dùng thêm mục vào danh sách thông qua sự kiện. (Không thực sự những gì tôi định làm.)

Trả lời

14

Hãy thử ObservableCollection<T> nó hỗ trợ INotifyCollectionChanged cung cấp sự kiện cho mọi khía cạnh của việc sửa đổi bộ sưu tập.

Namespace: System.Collections.ObjectModel

hội: WindowsBase.dll

+5

Nó di chuyển vào system.dll trong 4.0, btw – Will

+3

Đối với .NET 2 cũng có BindingList (http://msdn.microsoft.com/en-us/library/ms132679.aspx) không may là không có sự hỗ trợ sự kiện chi tiết đó. – Joey

+0

Tôi thực sự đã kết thúc với BindingList . ObservableCollection không hỗ trợ Compact Framework vì vậy tôi không thể sử dụng nó (xấu của tôi không đề cập đến điều đó). Cảm ơn cả hai cho câu trả lời. (Johannes, tôi đã bỏ phiếu cho 30 câu trả lời cho một số câu trả lời của bạn để "trả tiền" cho nhận xét của bạn.) Cảm ơn một lần nữa! – Vaccano

7

ObservableCollection<T> là gần như là bạn sẽ nhận được trong khuôn khổ.

OTOH, không khó để thực hiện việc này. Chỉ cần tạo một lớp thực hiện IList và kết thúc một thể hiện trong Ví dụ < T> nội bộ. Bạn chỉ có thể ném các sự kiện của mình nếu cần.

+0

Hoặc lấy từ Bộ sưu tập và ghi đè InsertItem/RemoveItem cũng đăng các sự kiện. – yoyo

0

Bạn cũng có thể viết một wrapper nhẹ tùy chỉnh nếu bạn muốn tối ưu hóa tốc độ với chi phí linh hoạt.

0

Không phải là tôi biết nhưng điều này sẽ được khá dễ dàng để thực hiện, bạn chỉ có thể tạo thêm của riêng bạn và loại bỏ các phương pháp, hoặc bạn có thể sử dụng một chỉ mục. Sau đó, bạn có thể làm bất cứ điều gì bạn thích về các sự kiện.

1

Bạn luôn có thể làm cho một tin List<...> và sau đó truy cập thông qua một phương pháp:

private List<string> listOfStrings = new List<string>; 

public void AddToList(string s) 
{ 
    // Do your work 
    listOfStrings.Add(s); 
} 

hoặc bạn có thể quá tải nó và thêm các sự kiện tuy nhiên bạn muốn.