我有一个列表框,当我更改基础对象属性时,文本没有更新:
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()方法。
答案 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”的接口