列表框项目消失

时间:2013-10-07 14:32:26

标签: c# winforms listbox .net-1.1

我目前有一个ListBox(称为wafersListBox),绑定到某个对象类型的ArrayList(称为晶圆)。当我想动态添加到ListBox时,我使用以下代码:

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

这成功地更改了ListBox中的项目,但是所有项目都消失了(它们仍然存在且可以被选中,但用户却看不到它们。)

有关如何解决此问题的任何想法?

更新: 这是我的Wafer课程:

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();

2 个答案:

答案 0 :(得分:1)

您应该告诉wafersListBox使用哪个属性作为标题。

这样做;

wafersListBox.DisplayMember = "PropertyNameThatYouWantToShow";

答案 1 :(得分: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设置为None,则会出现此问题。

作为一种解决方法,我将选择模式设置为One,然后在更新数据源时返回None。“