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;即可。