我目前有一个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();
答案 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。“