C#强制ListBox更新元素

时间:2009-02-06 08:22:34

标签: c# user-controls listbox

我正在继承标准的ListBox控件。我收到有关添加到列表中的任何元素的更改的通知。任务是更新ListBox显示的文本以更改元素。

我知道我可以删除已更改的元素并再次添加它,但由于显而易见的原因,这似乎不太可取。

2 个答案:

答案 0 :(得分:15)

不幸的是,ListView中的数据绑定不支持常规(项目)更改通知事件(FooChanged / INotifyPropertyChanged)。但是,如果您了解更改,则可以使列表重新绑定自身。由于您是子类,您可以调用:

this.RefreshItems();

或单个项目:

this.RefreshItem(index);

否则,由于这不是公开的,您可以通过更改DisplayMember

来模拟它
lb.DisplayMember = "";
lb.DisplayMember = "Bar";

有点hacky,也许,但它有效,并保持当前选择等(与清除DataSource不同。)

答案 1 :(得分:1)

为什么不手动更新相关项目的文字?您也可以考虑为ListBox推出自己的数据绑定机制。并查看ObjectListView以查看是否有任何帮助。