在软件开发中经常,使用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
ListView 控件的自定义排序功能
最新推荐文章于 2022-11-06 22:25:40 发布