2012-03-21 13 views
0

긴 항목 목록을 표시 할 수있는 ComboBox가 있습니다. 실제로 추가하거나 제거하지 않고 이러한 항목의 표시 텍스트를 변경해야하는 양식의 기능이 있습니다. 데이터 바인딩이 진행되지 않고 항목 목록에 직접 액세스하고 있습니다.Windows Forms의 ComboBox에서 항목 수정

문제는 항목 목록의 항목 속성을 수정해도 콤보 상자의 텍스트를 업데이트하지 않는다는 것입니다. ComboBox에서 다른 인접 ComboBox로 항목을 이동할 수있는 버튼이 있습니다. 이동 된 버튼은 제대로 표시되므로 문제가 다시 그려지지 않는 것 같습니다.

Invalidate(), Refresh(), Update()를 호출 해봤지만 작동하지 않습니다. 나는 ComboBox를 지우고 모든 것을 읽을 수 있다고 가정하지만,이 상자는 수천 개의 항목을 저장할 수 있으므로 그렇게하는 것이 효율적인 방법인지는 잘 모르겠습니다.

+2

몇 가지 코드를 추가해주세요. 또한 움직일 때 제대로 표시됩니다. 그러나, 그것이 올바르게 표시되지 않는 문제가 아닙니까? 어쩌면 내가 뭔가를 놓친 것 같아. –

+0

콤보 박스가 데이터 소스에 연결되어 있습니까? 해당 데이터 소스의 항목이 INotifyPropertyChanged를 구현하고 있습니까? – Reddog

+0

ComboBox에 추가 할 항목의 유형 2. 다른 ComboBox로 성공적으로 옮길 수있는 코드 3. 속성을 업데이트하는 코드 4. 표시 할 속성을 결정하는 방법 ComboBox – kaj

답변

0

콤보 상자의 텍스트 속성을 설정 단순히 시도하십시오 : 물론

combobox1.Text = "newText"; 

당신은 여전히 ​​이전과 항목을 변경해야합니다.

0

데이터 바인딩없이 항목 레이블을 업데이트 할 수없는 것으로 보입니다. 그래서 남아있는 유일한 것은 해당 항목 (Items.RemoveAt)을 제거하고 다시 삽입하는 것입니다 (Items.Insert).

0

는 다음과 같은 단계를 수행해야합니다

  1. 가 고려중인 항목의 인덱스를 얻을를
  2. 항목 표시 텍스트 또는 항목 자체
  3. 가 항목의 표시 텍스트를
  4. 삽입물을 장착 수 (당신을 가정 : 다시 같은 인덱스 여기

에있는 항목은 샘플 코드

int itemIndex = comboBox1.Items.IndexOf(/*your item*/); 
var item = comboBox1.Items[itemIndex]; 
//type cast back to the original type 
//change the display text i.e. by changing the display member inside your object 
comboBox1.Items.Insert(itemIndex, item); 

당신은 당신의 기능을 수행이 코드를 통해 반복 할 수있는 경우 : 항목이 다른 것보다 문자열 유형의 경우 EMS는 다음 시도 문자열 형)

int itemIndex = comboBox1.Items.IndexOf("yourItem"); 
string itemText = comboBox1.Items[itemIndex].ToString(); 
itemText = "yourNewString"; 
comboBox1.Items.Insert(itemIndex, itemText); 

의입니다 여러 항목에 대해

관련 문제