当前位置: 移动技术网 > IT编程>开发语言>c# > C# ListView 点击表头对数据进行排序功能的实现代码

C# ListView 点击表头对数据进行排序功能的实现代码

2019年07月18日  | 移动技术网IT编程  | 我要评论

添加表头单击事件

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

如对本文有疑问, 点击进行留言回复!!

相关文章:

验证码:
移动技术网