//定义一个排序类实现接口类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;
}