C# ListView 点击表头对数据进行排序功能的实现代码
程序员文章站
2023-08-15 21:11:43
添加表头单击事件
private void listview1_columnclick(object sender, columnclickeventargs e...
添加表头单击事件
private void listview1_columnclick(object sender, columnclickeventargs e) { if (listview1.columns[e.column].tag == null) { listview1.columns[e.column].tag = true; } bool tabk = (bool)listview1.columns[e.column].tag; if (tabk) { listview1.columns[e.column].tag = false; } else { listview1.columns[e.column].tag = true; } listview1.listviewitemsorter = new listviewsort(e.column, listview1.columns[e.column].tag); //指定排序器并传送列索引与升序降序关键字 listview1.sort();//对列表进行自定义排序 }
排序用到的类
public class listviewsort : icomparer { private int col; private bool desck; public listviewsort() { col = 0; } public listviewsort(int column, object desc) { desck = (bool)desc; col = column; //当前列,0,1,2...,参数由listview控件的columnclick事件传递 } public int compare(object x, object y) { int tempint = string.compare(((listviewitem)x).subitems[col].text, ((listviewitem)y).subitems[col].text); if (desck) { return -tempint; } else { return tempint; } } }
注意:
有的会报“错误 cs0305: 使用泛型 类型“system.collections.generic.icomparer<t>”需要 1 个类型参数”
这时只需要using system.collections.generic;改为using system.collections; 即可。