| 如何对ListView的项进行排序 |
|
| 作者:未知 文章来源:网络收集 点击数: 更新时间:2006-3-8 22:24:58
|
如何对ListView的项进行排序 当您使用资源浏览器查看文件时,您可以随心所欲的按名称、大小、类型及修改日期不同的列对文件进行大小排序。.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; } } 如何使用这个类,很简单。新建一个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()方法。 
|
|
[ 收藏此页到: 天天|和讯|博采|ViVi|狐摘|我摘|天极 ] 文章录入:kinda 责任编辑:kinda |
|
上一篇文章: vs.net 编辑器在新建工程时弹出 下一篇文章: 用C#实现木马程序(分析) |
| 【字体:小 大】【发表评论】【加入收藏】【告诉好友】【打印此文】【关闭窗口】 |