2013-10-07 205 views
0

我目前有一個列表框(稱爲wafersListBox)綁定到某個對象類型(稱爲晶圓)的ArrayList。當我要動態地添加到列表框,我用下面的代碼:列表框項目消失

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

這成功地改變了ListBox中的項目,但所有項目的消失(它們還在那裏,並且可以選擇,但用戶無法看到它們)。

有關如何解決此問題的任何想法?

UPDATE: 這是我的晶圓級:

public class Wafer 
{ 
    public string maID; 

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

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

這就是我所謂的代碼,它增加了當前所選項目的副本列表框:

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

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

有關「ArrayList」中元素的任何信息? –

+0

我沒有看到任何代碼初始化「晶圓」? –

回答

1

你應該可能會告訴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爲無。出現此問題

作爲一種解決方法,我將選擇模式設置爲One,然後在更新數據源時將其設回無。「