您的位置:首页 > 其它

ListView 控件的自定义排序功能

2020-01-15 04:35 781 查看

在软件开发中经常,使用ListView进行自定义的排序,那么如何能自定义一些类来进行,字符串、整型、日期等类型进行排序呢?

一、创建 ListViewItemComparer 类创建 ListViewItemComparer

   下面自定义了两个类都继承自IComparer,一个用于字符串排序,一个用于整型排序
/// <summary>
 /// 进行字符串排序
 /// </summary>
 public class ListViewItemComparer:IComparer
 {
  private int col;
  public ListViewItemComparer()
  {
   col=0;
  }
  public ListViewItemComparer(int column)
  {
   col=column;
  }
  public int Compare(object x, object y)
  {
   int ret = String.Compare(((ListViewItem)x).SubItems[col].Text, ((ListViewItem)y).SubItems[col].Text);
   return ret;
  }
 }
 /// <summary>
 /// 进行整型数排序
 /// </summary>
 public class ListViewIntItemComparer:IComparer
 {
  private int col;
  public ListViewIntItemComparer()
  {
   col=0;
  }
  public ListViewIntItemComparer(int column)
  {
   col=column;
  }
  public int Compare(object x, object y)
  {
   int lvX = 0;
   int lvY = 0;
   try
   {
    lvX = Int32.Parse(((ListViewItem)x).SubItems[col].Text);
    lvY = Int32.Parse(((ListViewItem)y).SubItems[col].Text);
   }
   catch(Exception exp)
   {
    return -1;
   }
   
 if(lvX>lvY)
    return 1;
   else
    return 0;
  }
 }
二、在ListView中处理ColumnClick事件:

private void listView2_ColumnClick(object sender, System.Windows.Forms.ColumnClickEventArgs e)
  {
     // Set the ListViewItemSorter property to a new ListViewItemComparer object.
     this.listView2.ListViewItemSorter = new ListViewIntItemComparer(e.Column);
     // Call the sort method to manually sort the column based on the ListViewItemComparer implementation.
     listView2.Sort();
  }

参考:
使用 Windows Form 按列排序 ListView 项目
http://www.microsoft.com/china/MSDN/library/netFramework/netframework/NFdnwinformslistviewsort.mspx

  • 点赞
  • 收藏
  • 分享
  • 文章举报
sundy26 发布了9 篇原创文章 · 获赞 0 · 访问量 1万+ 私信 关注
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐