0

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

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

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

有想法该怎么解决这个吗?

更新:这是我的晶圆类:

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

2 回答 2

1

您可能应该告诉使用wafersListBox什么属性作为它的标题。

像这样做;

wafersListBox.DisplayMember = "PropertyNameThatYouWantToShow";
于 2013-10-07T14:37:53.207 回答
0

抱歉 - 我无法添加额外的评论,这比写一个新的“答案”更可取,但如果你如下切换行的位置,你会发现有什么不同吗?

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

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

我刚刚在另一个 SO 帖子中遇到的另一件事(ListBox 没有显示对 DataSource 的更改):

“列表框中还有一个错误可能导致此问题。如果将 SelectionMode 设置为 None,则会出现此问题。

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

于 2013-10-07T20:27:32.600 回答