在.NET中,ListView控件提供了一个内置的排序功能。要实现ListView控件的排序功能,你需要完成以下几个步骤:
public class ListViewItemComparer : IComparer
{
private int _columnIndex;
private SortOrder _sortOrder;
public ListViewItemComparer(int columnIndex, SortOrder sortOrder)
{
_columnIndex = columnIndex;
_sortOrder = sortOrder;
}
public int Compare(object x, object y)
{
ListViewItem itemX = (ListViewItem)x;
ListViewItem itemY = (ListViewItem)y;
int result = String.Compare(itemX.SubItems[_columnIndex].Text, itemY.SubItems[_columnIndex].Text);
if (_sortOrder == SortOrder.Descending)
return -result;
else
return result;
}
}
private void listView_ColumnClick(object sender, ColumnClickEventArgs e)
{
// 获取当前列的索引
int columnIndex = e.Column;
// 获取当前列的排序顺序
SortOrder sortOrder = SortOrder.Ascending;
if (listView.Columns[columnIndex].Tag != null && (SortOrder)listView.Columns[columnIndex].Tag == SortOrder.Ascending)
{
sortOrder = SortOrder.Descending;
}
// 设置当前列的排序顺序
listView.Columns[columnIndex].Tag = sortOrder;
// 使用ListViewItemComparer对列表项进行排序
listView.ListViewItemSorter = new ListViewItemComparer(columnIndex, sortOrder);
listView.Sort();
}
View
属性为Details
,并且已经添加了列。同时,为ListView控件的ColumnClick
事件添加上面创建的事件处理程序。listView.View = View.Details;
listView.Columns.Add("Column1");
listView.Columns.Add("Column2");
listView.ColumnClick += listView_ColumnClick;
现在,当用户点击ListView控件的列标题时,列表项将根据所选列的值进行排序。每次点击相同的列标题时,排序顺序将在升序和降序之间切换。
免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。