在Winform中如何实现ListView排序

Winform中的ListView排序是一种常用的功能,下面是例子代码,放上来留个备份
using System;
using System.Windows.Forms;
using System.Drawing;
using System.Collections;

namespace ListViewSortFormNamespace

    
public class ListViewSortForm : Form
    
{
        
private ListView listView1;
       
        
public ListViewSortForm()
        
{
            ListViewItem listViewItem1 
= new ListViewItem(new string[] {"Banana","a","b","c"}-1, Color.Empty, Color.Yellow, null);
            ListViewItem listViewItem2 
= new ListViewItem(new string[] {"Cherry","v","g","t"}-1, Color.Empty, Color.Red, new Font("Microsoft Sans Serif"8.25F, FontStyle.Regular, GraphicsUnit.Point, ((System.Byte)(0))));
            ListViewItem listViewItem3 
= new ListViewItem(new string[] {"Apple","h","j","n"}-1, Color.Empty, Color.Lime, null);
            ListViewItem listViewItem4 
= new ListViewItem(new string[] {"Pear","y","u","i"}-1, Color.Empty, Color.FromArgb(((System.Byte)(192)), ((System.Byte)(128)), ((System.Byte)(156))), null);
     
            
this.listView1 = new ListView();

            
this.listView1.Sorting = SortOrder.None;
            
this.listView1.View = View.Details;
            
this.listView1.Columns.Add(new ColumnHeader());
            
this.listView1.Columns[0].Text = "Column 1";
            
this.listView1.Columns[0].Width = 100;
            listView1.Columns.Add(
new ColumnHeader());
            listView1.Columns[
1].Text = "Column 2";
            listView1.Columns.Add(
new ColumnHeader());
            listView1.Columns[
2].Text = "Column 3";
            listView1.Columns.Add(
new ColumnHeader());
            listView1.Columns[
3].Text = "Column 4";
            
this.SuspendLayout();
            
this.listView1.Items.AddRange(new ListViewItem[] {listViewItem1,
                listViewItem2,
                listViewItem3,
                listViewItem4}
);
            
this.listView1.Location = new Point(1010);
            
this.listView1.Name = "listView1";
            
this.listView1.Size = new Size(300100);
            
this.listView1.TabIndex = 0;
            
this.listView1.LabelEdit = true;
            
this.listView1.ColumnClick += new ColumnClickEventHandler(ColumnClick);
               
            
this.ClientSize = new Size(400400);
            
this.Controls.AddRange(new Control[] {this.listView1});
            
this.Name = "ListViewSortForm";
            
this.Text = "Sorted ListView Control";
            
this.ResumeLayout(false);
        }

        
    
        
// ColumnClick event handler.
        private void ColumnClick(object o, ColumnClickEventArgs e)
        
{
            
this.listView1.ListViewItemSorter = new ListViewItemComparer(e.Column);
        }


        [System.STAThreadAttribute()]
        
public static void Main()
        
{
            Application.Run(
new ListViewSortForm());
        }


    }


    
// 自定义排序算法
    class ListViewItemComparer : IComparer
    
{
        
private int col;
        
public ListViewItemComparer()
        
{
            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);
        }

    }


}

原文地址:https://www.cnblogs.com/dahuzizyd/p/Winform_ListView_Sort.html