【发布时间】:2011-04-14 11:27:37
【问题描述】:
完全被一些看似简单的事情难住了,已经被做死了……但仍然难住了。
我想做的事:我有一个 WinForms 列表框。它的项目由对象填充,DisplayMember 已设置。随着应用程序的运行,列出的项目中的数据可能会发生变化,包括 DisplayMember 后面的字段。我希望在发生这种情况时更改 ListBox 中显示的文本,并且我还希望 ListBox 自行重新排序,以便项目保持字母顺序。
当数据发生变化时,BindingList 可以很好地更新显示的文本,但对于我来说,我无法对其进行排序。
我查看了这个:http://msdn.microsoft.com/en-us/library/ms993236.aspx
这里有很多关于如何做到这一点的线程,但似乎都不适用于 ListBox。
在 ListBox 上设置 Sorted 属性同样没有帮助。
我需要做什么才能让 ListBox 自行排序?
【问题讨论】:
-
您是直接绑定到 BindingList 还是使用 DataSource 然后使用 BindingList?后者我从来没有遇到过问题。
-
我有一个对象列表(实际上是实体框架对象),我将它们传递给 BindingList 的构造函数,然后将该 BindingList 分配给 ListBox 的 DataSource。这将更新 DisplayMember,但不会自动排序。由于 BindingList 不是原生排序,这并不奇怪。但我似乎无法对其进行排序,即使我制作了自己的派生版本,如 MSDN 示例中那样,也无法通过其他方法。
-
我们在这里讨论的是什么版本的 .Net?
-
你考虑过自己实现 IBindingList 吗?
-
我想知道您是否需要对 BindingList 中的项目使用 INotifyPropertyChanged 以便 ListBox 知道在 DisplayMember 属性更改后采取措施?虽然如果 ListBox 不能正确处理,我不会感到惊讶......
标签: c# winforms sorting listbox bindinglist