2009-06-16 5 views
1

유효성 검사 개체 유효성 검사 목록이 있습니다. 폼에 다른 바운드 목록에서 항목의 속성에 바인딩

public class Validation 
{ 
     public IList<KeyValuePair<string, string>> Arguments 
     { //(...) } 
} 

은 검증 목록 및 인수 검증 목록에서 현재 검증 목록에 바인딩 된 DataGridView에 바인딩 목록이 있습니다. 대화 상자에서 선택한 유효성 검사 개체를 편집 할 수 있습니다. 사용자는 인수 컬렉션을 수정할 수 있습니다. 창을 닫으면 DataGridView에 표시된 항목이 새로 고쳐 져야합니다. 그들은하지 않습니다. 또한 인수 목록이 편집 후에 비어 있으면 IndexOutOfRangeException이 발생합니다.

어떻게 작동합니까?

답변

0

데이터 바인딩을위한 몇 가지 중요한 인터페이스가 있습니다. 특히 IBindingList은 이벤트를 가지고 있으며 DataGridView이들을 수 있습니다.

구체적인 목록을 BindingList<T>으로 변경할 수 있습니까? 그렇게하면 무료로 제공 할 수 있습니다. BindingList<T> : IList<T>DataGridView은 실제 객체 인 객체에 대해서만 알고 있으므로 반환 유형을 변경할 필요가 없습니다 (이 객체를 IList<T>이라고도 함).

다른 실용적인 옵션을 다시 설정하는 것입니다 데이터 - 바인딩 DataGridView에 - 아마도 DataSource 다시 null 및 설정 :

object tmp = grid.DataSource; 
grid.DataSource = null; 
grid.DataSource = tmp; // low-tech data-source reset 
+0

히히히 당신이 오늘의 나의 영웅) 덕분에 – agnieszka

+0

할을 왜 IList로 제대로 작동하지 않는지 알겠습니까? – agnieszka

+0

IList는 문제가 아닙니다. 단지 인터페이스 일뿐입니다. 중요한 구체적인 유형입니다. 구 체 유형이 List 또는 ArrayList이면 둘 다 IBindingList를 구현하지 않으므로 어느 쪽도 DataGridView에 변경이 발생했음을 사전에 알릴 수 없습니다. –

관련 문제