您的位置:首页 > 其它

点击listview 的列头对其item进行自动排序

2013-11-22 16:59 567 查看
若要自定义排序顺序,必须编写一个实现 IComparer 接口的类,并将 ListViewItemSorter 属性设置为该类的一个对象。
当设置 ListViewItemSorter 属性值时,将自动调用 Sort 方法。

实现 IComparer 接口的类:

public partial class Form1 : Form
{
private ListViewColumnSorter lvwColumnSorter;

public Form1()
{
InitializeComponent();

//若要自定义排序顺序,必须编写一个实现 IComparer 接口的类,并将 ListViewItemSorter 属性设置为该类的一个对象。
//当设置 ListViewItemSorter 属性值时,将自动调用 Sort 方法。

lvwColumnSorter = new ListViewColumnSorter();   //new一个listview的排序类的对象
this.listView1.ListViewItemSorter = lvwColumnSorter;  //设置ListView1的排序列

this.listView1.View = View.Details;

this.listView1.Columns.Add(new ColumnHeader());
this.listView1.Columns[0].Text = "Name";
this.listView1.Columns[0].Width=100;

this.listView1.Columns.Add(new ColumnHeader());
this.listView1.Columns[1].Text = "Path";
this.listView1.Columns[1].Width = 270;

this.listView1.Columns.Add(new ColumnHeader());
this.listView1.Columns[2].Text = "Type";
this.listView1.Columns[2].Width = 50;

}

private void listView1_ColumnClick(object sender, ColumnClickEventArgs e)
{

if (e.Column == lvwColumnSorter.SortColumn)   //检查点击的列是不是现在的排序列
{
//重新设置此列的排序方法
if (lvwColumnSorter.Order == SortOrder.Ascending)
{
lvwColumnSorter.Order = SortOrder.Descending;
}
else
{
lvwColumnSorter.Order =SortOrder.Ascending;
}

}
else
{
//设置排序列,默认为正向排序
lvwColumnSorter.SortColumn = e.Column;
lvwColumnSorter.Order = SortOrder.Ascending;

}

this.listView1.Sort();

}

}


View Code
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: