2012-06-04 4 views
2

목록 상자에 사전을 바인딩하려고하면 ArgumentException이 발생합니다. 새 값 멤버에게 바인딩 할 수 없습니다.빈 사전을 목록 상자에 바인딩

다음 코드를 사용합니다. 어떤 사람이 잘못되었는지 말할 수 있습니까? 내가 입력 할 때 내가 사전에 행 때문에 사전 개체가 그래서를 추가, 변경 사항을보고하지 않기 때문에

this.contactpersonenListBox = new Dictionary<int, string>(); 

lsContactpersonen.DataSource = new BindingSource(this.contactpersonenListBox, null); 
lsContactpersonen.DisplayMember = "Value"; 
lsContactpersonen.ValueMember = "Key"; 
+1

왜 당신이 목록 상자에 빈 사전을 결합 할 수 있습니까? – Thousand

+0

제 경우에는 사전 결과가 쿼리 결과에 따라 동적으로 채워졌습니다. 때로 쿼리가 아무 것도 나타나지 않을 수도 있습니다. 데이터 소스를 빈 사전으로 두십시오. 결과 목록 상자에는 "(Collection)"이라는 단일 항목이 표시됩니다. –

답변

3

그것은 빈 사전을 결합하는 것이의 톤을하지 않습니다 ... 잘 작동 데이터 소스를 설정 한 후 사전에 항목이 ListBox에 표시되지 않습니다.

오류를 제거 할 수 있지만, 이런 식으로 설정하십시오 :

BindingSource b = new BindingSource(); 
b.DataSource = this.contactpersonenListBox; 
lsContactpersonen.DisplayMember = "Value"; 
lsContactpersonen.ValueMember = "Key"; 
lsContactpersonen.DataSource = b; 
+0

이것은 훌륭하지만, 이제는 내 목록 상자가 텍스트 (컬렉션)가있는 항목을 설정합니다. –

+0

@WillemT보고있는 내용을 볼 수 없습니다. 내 ListBox가 비어 있습니다. – LarsTech

+1

빈 때 목록 상자에 (컬렉션)라는 항목이있을 때 사전 바인딩합니다. 내가 사전을 채우 자마자 아이템이 사라진다. –

관련 문제