ListView列排序(c#)

论坛 期权论坛 编程之家     
选择匿名的用户   2021-6-2 16:03   1572   0

//定义一个排序类实现接口类IComparer中的Compare接口
public class ColumnSort:IComparer
{
private int colNum; //要排序的列
public bool bAscend = true; //排序方式升序或降序

public ColumnSort(int sortColNum)
{
colNum = sortColNum;
}

//接口实现
public int Compare(object A,object B)
{
System.Windows.Forms.ListViewItem listItemA = (System.Windows.Forms.ListViewItem)A;
System.Windows.Forms.ListViewItem listItemB = (System.Windows.Forms.ListViewItem)B;

int result = String.Compare(listItemA.SubItems[colNum].ToString(),listItemB.SubItems[colNum].ToString());
if( bAscend == true )
return result;
else
return (-1) * result;
}
}

具体操作实例

在listView1的ColumnClick事件中做如下处理既可

private void listView1_ColumnClick(object sender, System.Windows.Forms.ColumnClickEventArgs e)
{
ColumnSort colSort = new ColumnSort(e.Column);
colSort.bAscend = (listView1.Sorting == SortOrder.Ascending);

if(colSort.bAscend == true)
{
listView1.Sorting = SortOrder.Descending;
}
else
{
listView1.Sorting = SortOrder.Ascending;
}
listView1.ListViewItemSorter = colSort;
}

分享到 :
0 人收藏
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

积分:3875789
帖子:775174
精华:0
期权论坛 期权论坛
发布
内容

下载期权论坛手机APP