溫馨提示×

在C#環境下ListView如何排序

c#
小樊
116
2024-09-11 02:46:28
欄目: 編程語言

在C#中,使用ListView控件進行排序的方法有很多種。以下是一個簡單的示例,展示了如何對ListView控件中的數據進行排序:

  1. 首先,確保你已經添加了System.Windows.FormsSystem.Collections命名空間的引用。
using System.Windows.Forms;
using System.Collections;
  1. 創建一個自定義的比較器類,實現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;
    }
}
  1. 在你的表單上添加一個ListView控件,并為其添加列和數據。

  2. 為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();
}
  1. 最后,確保在初始化表單時為ListView控件的ColumnClick事件添加事件處理程序。
public YourForm()
{
    InitializeComponent();

    listView.ColumnClick += listView_ColumnClick;
}

現在,當用戶點擊ListView控件中的列標題時,數據將根據所選列進行升序或降序排序。

0
亚洲午夜精品一区二区_中文无码日韩欧免_久久香蕉精品视频_欧美主播一区二区三区美女