Bound ListBox SelectedIndex不断变化

时间:2011-01-25 13:17:17

标签: c# winforms data-binding

我有一个绑定到List的ListBox。每次ListBox更新以反映集合时,SelectedIndex都会更改为顶部项目。如何阻止此行为并保留当前的SelectedIndex?

[UPDATE]

我找到了一个更好的集合来用于这种功能 - 'BindingList':http://msdn.microsoft.com/en-us/library/ms132679(v=VS.90).aspx

WulfgarPro。

2 个答案:

答案 0 :(得分:2)

  

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

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

重新绑定到(另一个)列表时,您必须保存&恢复索引位置。只需在更新DataSource的地方编写代码即可。

答案 1 :(得分:1)

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

WulfgarPro。

相关问题