在C#中,使用ListView控件進行排序的方法有很多種。以下是一個簡單的示例,展示了如何對ListView控件中的數據進行排序:
System.Windows.Forms
和System.Collections
命名空間的引用。using System.Windows.Forms;
using System.Collections;
IComparer
接口。這個類將用于比較兩個ListViewItem對象。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;
}
}
在你的表單上添加一個ListView控件,并為其添加列和數據。
為ListView控件的ColumnClick
事件添加一個事件處理程序,以便在用戶點擊列標題時對數據進行排序。
private void listView_ColumnClick(object sender, ColumnClickEventArgs e)
{
ListView listView = (ListView)sender;
// 獲取當前列的排序順序
SortOrder sortOrder = listView.Columns[e.Column].Tag is SortOrder so ? so : SortOrder.None;
// 切換排序順序
switch (sortOrder)
{
case SortOrder.None:
case SortOrder.Descending:
sortOrder = SortOrder.Ascending;
break;
case SortOrder.Ascending:
sortOrder = SortOrder.Descending;
break;
}
// 更新列標題的排序順序
listView.Columns[e.Column].Tag = sortOrder;
// 對ListView中的數據進行排序
listView.ListViewItemSorter = new ListViewItemComparer(e.Column, sortOrder);
listView.Sort();
}
ColumnClick
事件添加事件處理程序。public YourForm()
{
InitializeComponent();
listView.ColumnClick += listView_ColumnClick;
}
現在,當用戶點擊ListView控件中的列標題時,數據將根據所選列進行升序或降序排序。