2013-10-07 148 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,然后在更新数据源时将其设回无。“