2012-09-05 3 views
0

나는 내 양식에 2 개의 목록 상자가 있으며 데이터베이스의 첫 번째 목록 상자에 일부 데이터를 바인딩했습니다. 이제 버튼을 눌렀을 때 첫 번째 목록 상자의 선택된 항목을 두 번째 목록 상자에 표시해야합니다. 한 번에 하나의 선택한 항목을 표시 할 수 있지만 여러 개의 선택된 항목을 표시 할 수 없습니다. 나는 해시 테이블을 사용했고 다음 코드는이 개념에 새로운 도움을 주었다.목록 상자 내용을 다른 목록 상자에 바인딩

Hashtable ht = new Hashtable(); 
ht.Add(listbox1.SelectedValue.ToString(),listbox1.Text.ToString()); 
int i = 0; 
foreach (string ent in ht.Values) 
{ 
    string[] name = new string[listbox1.Items.Count]; 
    for (i = 0; i < listbox1t.SelectedItems.Count; i++) 
    {  
     name[i] = listbox1.Text; 
     this.listbox2.Items.Add(name[i]); 
    } 
    listbox2.DisplayMember = ht.Values.ToString(); 
    listbox2.ValueMember = ht.Keys.ToString(); 
} 

답변

0

DisplayMember가 표시해야하는지가 아니라 Items 컬렉션의 각 개체에 대해 평가 속성의 이름을 입력합니다. 따라서 예를 들어 고객을 나타내는 객체는 FullName (MSDN link, 예제 포함)입니다.

ValueMember에는 개체를 고유하게 식별하는 속성의 이름이 포함되어야합니다 (예 : CustomerId).

0

첫 번째 ListControl의에 데이터 소스로 목록을 지정 :

listBoxControl1.Datasource = new List<string>() {"one","two","three","four"}; 

과 selectedvaluechanged 경우에

...

var tmp = listBoxControl1.SelectedItems.Cast<string>(); 
listBoxControl2.datasource = tmp.ToList<string>(); 

작동합니다 ...

나는 문자열을 사용 예를 들어, 대신 사용하는 클래스로 캐스팅해야합니다. 및 ... 생성자에서 displayvalue 및 valuemember를 할당합니다. 여러 번 할 필요가 없습니다.

관련 문제