2011-01-03 2 views
4

여러 콤보 상자를 단일 목록에 바인딩하려고합니다. 그러나 하나의 콤보 상자에서 값을 선택하면 List에 바인딩 된 모든 ComboBox가 동일한 값으로 변경됩니다.여러 콤보 상자를 1 개의 목록에 바인딩하는 중 <>

List<Country> countryList = new List<Country>(); 
// Add contries to list. There are two properties string Name, and string Code 
comboBox1.DataSource = countryList; 
comboBox1.DisplayMember = "Name"; 
comboBox1.ValueMember = "Code"; 


comboBox2.DataSource = countryList; 
comboBox2.DisplayMember = "Name"; 
comboBox2.ValueMember = "Code"; 

이제 comboBox1에서 국가를 선택하면 comboBox2도 선택됩니다. 각 콤보 상자마다 별도의 목록을 만들지 않는 것이 좋습니다.

답변

4

죄송합니다. 새 목록을 만들어야합니다. 만약 당신이 다른 목록을 만들 수 있습니다. 단지 한 쌍의 경우처럼 될 수있다, 즉 당신을 위해 작동하지 않는 경우

comboBox2.DataSource = countryList.ToList(); 

그러나 당신은 콤보 상자 중 하나에 대해 별도의 바인딩 컨텍스트를 만들 수 있으며 그 방법을

 BindingContext bcG1 = new BindingContext(); 

     comboBox1.BindingContext = bcG1; 

     comboBox1.DataSource = Countries; 
     comboBox1.DisplayMember = "Name"; 
     comboBox1.ValueMember = "Code"; 

     comboBox2.DataSource = Countries; 
     comboBox2.DisplayMember = "Name"; 
     comboBox2.ValueMember = "Code"; 
+1

선택 항목으로 사용하려는 싱글 톤 목록이 있다면 어떨까요? 데이터 바인딩에서 문제를 일으키는 목록 내부의 카운터를 사용하는 것처럼 보입니다. 이 기능을 독립적으로 수행 할 수있는 데이터 바인딩 객체가 있습니까? – galford13x

+0

@ galford13x 네가 맞아, 나는 오늘 새로운 것을 배웠다. 이를 반영하기 위해 답변을 업데이트했습니다. –

+2

+1 : 아, 네, BindingContext에 대해 잊어 버렸습니다. 그게 바로 제가 찾고 있던 것입니다. – galford13x

1

을 이 :

: 더가있는 경우

comboBox1.DataSource = Countries; 
comboBox1.DisplayMember = "Name"; 
comboBox1.ValueMember = "Code"; 

comboBox2.DataSource = Countries; 
comboBox2.BindingContext = new BindingContext(); 
comboBox2.DisplayMember = "Name"; 
comboBox2.ValueMember = "Code"; 

하거나 diffrent 형태로, 더 나은 공공의 메도를 만들

관련 문제