|
|
1
19
这就是我如何实现对多个列进行排序,以及将每个列作为数字或文本进行排序的方法。 首先使用这个类:
在窗体的构造函数中,按如下方式设置排序器:
然后像这样处理ListView控件的ColumnClick:
这都依赖于每列的标记属性,或者设置为“数字”或者不设置为“数字”,因此排序器知道如何排序。 在上面的示例中,我将值强制转换为浮点数,您可能希望将其更改为int。 |
|
|
2
5
如果您开始使用ListView,那么使用 ObjectListView 相反。ObjectListView是一个围绕.NET WinForms ListView的开放源代码包装器,它解决了所有这些让使用ListView变得如此令人沮丧的小问题。例如,它会自动对int排序,使“100”在“3”之后(日期时间、bools和其他所有内容也会正确排序)。 说真的,在使用ObjectListView之后,您将永远不希望返回到普通的ListView。 是的,我是作者——但这并不意味着我有偏见……好吧,也许是这样的:)看 here 其他人的意见。 |
|
|
3
3
您需要创建一个实现
然后,将此类比较器分配给ListViewItemSorter属性,并调用ListView控件的Sort方法:
|
|
|
4
0
我将在数据源(模型)中而不是视图中执行此操作。在那里排序,它应该通过数据绑定在视图中更新它。 |
|
|
5
0
我使用了Neil-N的类,但更改了if语句来测试类型属性而不是标记属性。我将每一列设置为包含整数值的数字(而不是文本)。排序效果很好。
|
|
6
0
|