2011-01-25 33 views

回答

2

当[...]更新以反映集合

这是否意味着有一个新的集合?如果是这样,“同一个位置”是什么意思?

当重新绑定到(nother)列表时,您将不得不保存&恢复索引位置。只需在您更新DataSource的地方编写代码即可。

+0

@ Henk Holterman,“相同的位置”我的意思是“相同的项目” - 我试图实现你的建议。我正在使用线程来检索新项目 - 当绑定集合被更改时不应该自动更新ListBox吗?我似乎没有ListBox更新反映集合内的项目,而无需使用委托调用ListBox.DataSource = [..]。 – wulfgarpro

+0

@wulf,BindingList可能会有所帮助。但是如果加载新的(实例)项目,'相同的项目'并不是那么简单。 –

+0

BindingList 是完美的!谢谢你的帮助。 – wulfgarpro

1

使用BindingList集合而不是List解决了很多我的问题。我最初使用线程和委托来查询集合并调用ListBox.DataSource = [..]来更新绑定。这很慢,麻烦而且容易出错。更不用说我最初的问题,无法轻松保留SelectedItem。切换到BindingList允许我删除线程和委托,现在一切按预期工作。为ListBox指定所需的显示属性可以使用ListBox.DisplayMember = [..]来实现。

WulfgarPro。