要在listview中实现排序,需要用listview.Sorting属性,它接受一个枚举类型的值
list_view.Sorting = SortOrder.Ascending; // 1 为正序>
其中
None = 0, // 不排序
Ascending = 1, //升序
Descending = 2 //降序
然后在将ListViewItemComparer这个类的实例赋给listview的ListViewItemSorter属性,实现列表排序功能
list_view.ListViewItemSorter = new ListViewItemComparer(SortOrder.Descending, e.Column); //点击那一列,e.Column就等于几
!!要注意 ListViewItemComparer这个类继承了IComparer接口,所以必须续写ICompare接口中唯一的方法Compare()
这个Compare(object x, object y)方法需要两个object类型的参数
然后返回一个int类型的值(0或者正整数或者负整数),用来代表排序结果
(注:要比较几次,系统就会自己调用Compare方法几次,不需要人工手动调用)
!!!注意!!!
不要弄混Compare(object a ,object b)和CompareTo(object x)
Compare(object a ,object b)是IComparable接口中的方法
CompareTo(object x)是ICompare接口中的方法
二者接受的参数不同,但都返回一个int类型的值,都用于排序
接口 | IComparable | ICompare |
---|---|---|
方法 | CompareTo(object x ) | Compare(object a ,object b) |
参数 | 一个参数 | 两个参数 |
返回值 | 一个int类型的值 | 一个int类型的值 |
翻译为 | 可比较对象 | 比较器 |
习惯用法 | 新的“类”,要比较这个类中的成员,和Sort()搭配使用 |