列表框文本未更新

时间:2012-04-01 13:17:49

标签: c# winforms

我有一个列表框,当我更改基础对象属性时,文本没有更新:

ClassA testObj = new ClassA(){name="myname"};

ListBox1.items.Add(testObj);

Class ClassA
{
public string name {get;set;}
public override string ToString()
 {
  return name;
 }
}

因此,如果我更新ClassA.name属性,则Listbox不会更新。我试图调用listboxes refresh()方法。

2 个答案:

答案 0 :(得分:3)

尝试使用新参考替换列表中的项目:

ClassA item = (ClassA)listBox1.Items[0];
item.name = "New Item";
listBox1.Items[0] = item;

不幸的是,这样做的一个不好的副作用是多次触发SelectedIndexChanged事件,因此您需要删除处理程序并将其重新添加或设置标志以解决该行为。

或者只是让您的类实现INotifyPropertyChanged并让您的列表使用BindingList<ClassA>作为DataSource,然后对项目属性的任何更改都会自动更新ListBox。

答案 1 :(得分:0)

您的班级“ClassA”应该继承一个名为“INumerable”的接口