//定义一个排序类实现接口类IComparer中的Compare接口 public class ColumnSort:IComparer { private int colNum; //要排序的列 public bool bAscend = true; //排序方式升序或降序
public ColumnSort(int sortColNum) { colNum = sortColNum; }
//接口实现 public int Compare(object A,object B) { System.Windows.Forms.ListViewItem listItemA = (System.Windows.Forms.ListViewItem)A; System.Windows.Forms.ListViewItem listItemB = (System.Windows.Forms.ListViewItem)B;
int result = String.Compare(listItemA.SubItems[colNum].ToString(),listItemB.SubItems[colNum].ToString()); if( bAscend == true ) return result; else return (-1) * result; } }
具体操作实例
在listView1的ColumnClick事件中做如下处理既可
private void listView1_ColumnClick(object sender, System.Windows.Forms.ColumnClickEventArgs e) { ColumnSort colSort = new ColumnSort(e.Column); colSort.bAscend = (listView1.Sorting == SortOrder.Ascending); if(colSort.bAscend == true) { listView1.Sorting = SortOrder.Descending; } else { listView1.Sorting = SortOrder.Ascending; } listView1.ListViewItemSorter = colSort; } |