【问题标题】:listview C# sorting by specific column [duplicate]listview C#按特定列排序[重复]
【发布时间】:2012-01-07 15:35:02
【问题描述】:

如何在 WinForms .NET 2.0 中按特定列号对列表视图控件进行排序?例如我有一个名为“行号”的列,其索引为 1,我想按升序对列表视图框中的项目进行排序。

【问题讨论】:

标签: c# winforms sorting indexing


【解决方案1】:

我在很多 Winform 项目中都使用过这个列排序器:

private void listView1_ColumnClick(object sender, 
                   System.Windows.Forms.ColumnClickEventArgs e)
{
   ListView myListView = (ListView)sender;

   // Determine if clicked column is already the column that is being sorted.
   if ( e.Column == lvwColumnSorter.SortColumn )
   {
     // Reverse the current sort direction for this column.
     if (lvwColumnSorter.Order == SortOrder.Ascending)
     {
      lvwColumnSorter.Order = SortOrder.Descending;
     }
     else
     {
      lvwColumnSorter.Order = SortOrder.Ascending;
     }
   }
   else
   {
    // Set the column number that is to be sorted; default to ascending.
    lvwColumnSorter.SortColumn = e.Column;
    lvwColumnSorter.Order = SortOrder.Ascending;
   }

   // Perform the sort with these new sort options.
   myListView.Sort();
}

来源Click Here

【讨论】:

    【解决方案2】:

    MSDN 上有示例ListView.ColumnClick article:非常简短。本质上,您编写一个ListViewItemComparer 并在每次单击列时使用它:

     class ListViewItemComparer : IComparer
     {
        private int col = 0;
    
        public ListViewItemComparer(int column)
        {
            col = column;
        }
        public int Compare(object x, object y)
        {
            return String.Compare(((ListViewItem)x).SubItems[col].Text, ((ListViewItem)y).SubItems[col].Text);
        }
     }
    
     class MyForm : Form
     {
        // private System.Windows.Forms.ListView listView1;
    
        // ColumnClick event handler.
        private void ColumnClick(object o, ColumnClickEventArgs e)
        {
            this.listView1.ListViewItemSorter = new ListViewItemComparer(e.Column);
        }
     }
    

    【讨论】:

    • 不明白为什么这被标记了。为了快速排序,它效果很好!在 asc/desc 之间切换是否很容易做到!还是谢谢!
    • 只需添加“使用 System.Collections;”在您的项目中,这很简单,并且适用于基本的升序排序
    猜你喜欢
    • 2020-04-30
    • 1970-01-01
    • 2020-09-15
    • 2021-10-01
    • 1970-01-01
    • 1970-01-01
    • 2021-11-12
    • 1970-01-01
    • 2022-09-29
    相关资源
    最近更新 更多