C# ListView 点击表头对数据进行排序功能的实现代码
添加表头单击事件
privatevoidlistView1_ColumnClick(objectsender,ColumnClickEventArgse)
{
if(listView1.Columns[e.Column].Tag==null)
{
listView1.Columns[e.Column].Tag=true;
}
booltabK=(bool)listView1.Columns[e.Column].Tag;
if(tabK)
{
listView1.Columns[e.Column].Tag=false;
}
else
{
listView1.Columns[e.Column].Tag=true;
}
listView1.ListViewItemSorter=newListViewSort(e.Column,listView1.Columns[e.Column].Tag);
//指定排序器并传送列索引与升序降序关键字
listView1.Sort();//对列表进行自定义排序
}
排序用到的类
publicclassListViewSort:IComparer
{
privateintcol;
privatebooldescK;
publicListViewSort()
{
col=0;
}
publicListViewSort(intcolumn,objectDesc)
{
descK=(bool)Desc;
col=column;//当前列,0,1,2...,参数由ListView控件的ColumnClick事件传递
}
publicintCompare(objectx,objecty)
{
inttempInt=String.Compare(((ListViewItem)x).SubItems[col].Text,((ListViewItem)y).SubItems[col].Text);
if(descK)
{
return-tempInt;
}
else
{
returntempInt;
}
}
}
注意:
有的会报“错误CS0305:使用泛型类型“System.Collections.Generic.IComparer
这时只需要usingSystem.Collections.Generic;改为usingSystem.Collections;即可。