2013-10-07 1 views
0

현재 특정 객체 유형 (웨이퍼라고 함)의 ArrayList에 묶여있는 ListBox (wafersListBox)가 있습니다. 나는 동적으로리스트 박스에 추가 할 때, 나는 다음과 같은 코드를 사용합니다ListBox Items가 사라짐

wafersListBox.DataSource = null; 
wafersListBox.DataSource = wafers; 
wafersListBox.Refresh(); 

이 성공적으로 목록 상자의 항목을 변경,하지만 모든 항목은 아직 거기있어 선택할 수 있습니다 (사라,하지만 사용자는 단지 그들을 볼 수 없다).

해결 방법에 대한 의견이 있으십니까?

UPDATE : 이 내 웨이퍼 클래스입니다 :

Wafer w = wafersListBox.SelectedItem as Wafer; 
wafers.Add(w);   

wafersListBox.DataSource = null; 
wafersListBox.DisplayMember = "MID"; 
wafersListBox.DataSource = wafers; 
wafersListBox.Refresh(); 
+0

'ArrayList'의 요소에 대한 정보가 있습니까? –

+0

'웨이퍼'를 초기화하는 코드가 보이지 않습니까? –

답변

1

당신은해야한다 : 이것은 호출 코드가

public class Wafer 
{ 
    public string maID; 

    public string MID 
    { 
     get 
     { 
      return maID; 
     } 
     set 
     { 
      maID = value; 
     } 
    } 

    public Wafer(string m) 
    { 
     maID = m; 
    } 
} 

,이 목록 상자에 현재 선택한 항목의 복사본을 추가 아마도 wafersListBox에게 어떤 속성을 캡션으로 사용할지 알려주세요.

이렇게 하시겠습니까? 나는 새로운 "답"을 작성하는 동안 바람직했을 것이다 추가 코멘트를 추가 할 수 아니에요하지만 당신은 아래와 같은 라인의 위치를 ​​전환하면 어떤 차이를 보이나요 - 미안

wafersListBox.DisplayMember = "PropertyNameThatYouWantToShow"; 
+0

고마워요,하지만 이걸 시도 했는데도 여전히 똑같은 일을합니다. –

+0

당신이 한 일을 보여줄 수 있습니까? 또한 보여주고 자하는 대상의 코드를 보는 것이 도움이 될 것입니다. 이것으로 질문을 업데이트 해 주시겠습니까? –

0

?

Wafer w = wafersListBox.SelectedItem as Wafer; 
    wafers.Add(w);   

    wafersListBox.DataSource = null; 
    wafersListBox.DataSource = wafers; 
    wafersListBox.DisplayMember = "MID"; 
    wafersListBox.Refresh(); 

난 그냥 SO 게시 다른에 걸쳐 온 한가지 (ListBox doesn't show changes to DataSource) :

"이 문제를 일으킬 수있는 목록 상자에 버그가있다 당신은 없음으로의 selectionMode을 설정합니다.

나는 데이터 소스를 업데이트 할 때 선택 모드를 1로 설정 한 다음 다시 없음으로 설정합니다. "