명부 대 BindingList 장점 단점
누군가가 내 프로젝트에서 둘의 차이점을 설명 할 수 있습니까?
현재 나는 List<MyClass>
BindingSource를 가지고 있고 DataGridView를 BindingSource로 설정합니다.
IEditableObject
CancelEdit가 호출 될 때 객체를 원래 상태로 되돌 리도록 구현 했습니다.Memberwise.Clone()
내 목록을 BindingList로 변경하면이 문제가 해결되며 BindingList를 사용하면 어떤 이점이 있습니까?
A List<>
는 몇 가지 도우미 함수 (예 : 정렬)를 사용하여 주어진 유형의 항목으로 구성된 자동 크기 조정 배열입니다. 데이터 일 뿐이며 모델의 개체 집합에서 작업을 실행하는 데 사용할 가능성이 높습니다.
A BindingList<>
는 IBindingList
인터페이스 를 구현하는 형식화 된 목록 또는 컬렉션을 둘러싼 래퍼 입니다. 이것은 양방향 데이터 바인딩을 지원하는 표준 인터페이스 중 하나입니다. ListChanged
항목을 추가, 제거 또는 설정할 때 발생 하는 이벤트 를 구현하여 작동 합니다. 바인딩 된 컨트롤은 디스플레이를 새로 고칠시기를 알기 위해이 이벤트를 수신합니다.
BindingSource의 DataSource를으로 설정하면 목록을 래핑하기 위해 List<>
내부적으로를 만듭니다 BindingList<>
. BindingList<>
BindingSource 외부에서 액세스하려는 경우 목록을 yourself 로 사전 래핑 할 수 있지만 그렇지 않으면 동일합니다. 에서 상속하여 BindingList<>
항목을 변경할 때 특별한 동작을 구현할 수도 있습니다.
IEditableObject
BindingSource에서 처리합니다. 바인딩 된 컨트롤의 데이터를 변경할 때 모든 구현 개체에서 BeginEdit를 호출합니다. 그런 다음 BindingSource에서 EndEdit / CancelEdit를 호출하면 개체에 전달됩니다. 다른 행으로 이동하면 EndEdit도 호출됩니다.
BindingList는 이벤트를 사용하여 양방향 데이터 바인딩을 허용합니다. List는 컬렉션이 변경 될 때 이벤트를 발생시키지 않습니다.
나는 그것이 당신의 특정 문제를 고칠 것이라고 생각하지 않습니다.
참고 URL : https://stackoverflow.com/questions/2243950/listt-vs-bindinglistt-advantages-disadvantages
'Programing' 카테고리의 다른 글
숫자의 Excel과 유사한 열 이름을 얻는 알고리즘 (0) | 2020.09.17 |
---|---|
Web API에서 응답을 직렬화하지 못했습니다. (0) | 2020.09.17 |
정적 클래스 대신 싱글 톤 패턴을 언제 사용해야합니까? (0) | 2020.09.16 |
IFormatProvider의 기능은 무엇입니까? (0) | 2020.09.16 |
간단한 자바 프로젝트를 위해 선택할 아키 타입 (0) | 2020.09.16 |