2010-01-04 6 views
8

추가 및 제거 이벤트가있는 .net 컬렉션이 필요합니다. 거기에 미리 버전이 있습니까?추가 및 제거 이벤트가있는 List 버전이 있습니까?

예를 들어, 사용자가 이벤트를 통해 목록에 항목을 추가하면 일부 내부 카운터가 업데이트됩니다. (내가 원하는 것을 실제로는하지 않습니다.)

답변

14

시도 ObservableCollection<T>INotifyCollectionChanged은 컬렉션 수정의 모든 측면에 이벤트를 제공합니다.

네임 스페이스 : System.Collections.ObjectModel

어셈블리 : 당신이 프레임 워크에 얻을 것이다으로 수 WindowsBase.dll

+5

4.0에서 system.dll로 이동 중입니다. btw – Will

+3

.NET 2의 경우 불행히도 BindingList (http://msdn.microsoft.com/en-us/library/ms132679.aspx)이 있습니다. 그 세분화 된 이벤트 지원. – Joey

+0

실제로 바인딩 목록 으로 끝났습니다. ObservableCollection 은 Compact Framework를 지원하지 않으므로 사용할 수 없습니다 (언급하지 않기에 나쁘다). 답을 모두 주셔서 감사합니다. (요하네스, 나는 당신의 의견에 대해 "지불"에 대한 당신의 대답 중 일부에 30pt를 썼습니다.) 다시 한번 감사드립니다! – Vaccano

7

ObservableCollection<T>는 가까운 거리에 있습니다.

OTOH 이렇게하기가 어렵지 않습니다. 그냥 IList를 구현하고 내부 목록 < T> 인스턴스를 래핑하는 클래스를 만듭니다. 필요에 따라 이벤트를 보낼 수 있습니다.

+0

또는 컬렉션 에서 파생되고 InsertItem/RemoveItem을 재정 의하여 이벤트를 게시하십시오. – yoyo

0

유연성을 희생하면서 속도를 최적화하려는 경우 맞춤형 경량 래퍼를 작성할 수도 있습니다.

0

내가 알지는 못했지만 구현하기가 매우 쉽다. 직접 추가하고 제거하는 방법을 만들거나 인덱서를 사용할 수있다. 그런 다음 이벤트와 관련하여 원하는대로 할 수 있습니다.

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

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

또는 당신은 그것을 과부하 당신이 원하는대로 이벤트를 추가 할 수 있습니다 : 당신은 항상 다음 개인 List<...> 만들 수

1

는 방법으로 액세스 할 수 있습니다.

관련 문제