怎样对ListView的项进行排序

it2025-10-20  2

 

当您使用资源浏览器查看文件时,您能够随心所欲的按名称、大小、类型及改动日期不同的列对文件进行大小排序。.Net提供的ListView组件没有直接提供这样的功能,但要实现并不难。

  ListView.Sort()方法的功能是“对列表视图的项进行排序”,可当您调用它时却什么也没有发生,原因是您没有为listView1.ListViewItemSorter指定排序器。所以,首先必须写一个排序类。 public class mySorter:IComparer { private Comparer comparer; private int sortColumn; private SortOrder sortOrder; public mySorter() { sortColumn=0; sortOrder=SortOrder.None; comparer=Comparer.Default; } //指定进行排序的列 public int SortColumn { get {return sortColumn;} set {sortColumn=value;} } //指定按升序或降序进行排序 public SortOrder SortOrder { get {return sortOrder;} set {sortOrder=value;} } public int Compare(object x,object y) { int CompareResult; ListViewItem itemX=(ListViewItem)x; ListViewItem itemY=(ListViewItem)y; //在这里您能够提供自己定义的排序 CompareResult=comparer.Compare(itemX.SubItems[this.sortColumn].Text,itemY.SubItems[this.sortColumn].Text); if (this.SortOrder==SortOrder.Ascending) return CompareResult; else if (this.SortOrder==SortOrder.Descending) return (-CompareResult); else return 0; } } 怎样使用这个类,非常easy。新建一个Windows应用程序,增加ListView组件listView1并将其View属性设为Details。 //增加排序类 private mySorter sorter; //改动窗口构造函数 public Form1() { InitializeComponent(); sorter=new myColumnSorter(); //为ListViewItemSorter指定排序类 this.listView1.ListViewItemSorter=sorter; sorter.SortOrder=SortOrder.Ascending; } //给单击表头事件增加代码 private void listView1_ColumnClick(object sender, System.Windows.Forms.ColumnClickEventArgs e) { if (e.Column==this.sorter.SortColumn) { if (this.sorter.SortOrder==SortOrder.Ascending) this.sorter.SortOrder=SortOrder.Descending; else if (this.sorter.SortOrder==SortOrder.Descending) this.sorter.SortOrder=SortOrder.Ascending; else return; } else { this.sorter.SortColumn=e.Column; } this.listView1.Sort(); } 假设您须要自己定义排序,那么您能够改动排序器的Compare()方法。 

 

转自domanager

转载于:https://www.cnblogs.com/bhlsheji/p/4055933.html

相关资源:数据结构—成绩单生成器
最新回复(0)