C# ListView中点击表头ColumnClick实现对相应列的排序

来源:互联网 发布:怎么清空手机所有数据 编辑:程序博客网 时间:2024/04/27 13:06

 

     private void listView1_ColumnClick(object sender, ColumnClickEventArgs e)
        {
            
if (listView1.Columns[e.Column].Tag == null)
            {
                listView1.Columns[e.Column].Tag 
= true;
            }
            
bool tabK = (bool)listView1.Columns[e.Column].Tag;
            
if (tabK)
            {
                listView1.Columns[e.Column].Tag 
= false;
            }
            
else
            {
                listView1.Columns[e.Column].Tag 
= true;
            }
            listView1.ListViewItemSorter 
= new ListViewSort(e.Column, listView1.Columns[e.Column].Tag);
            
//指定排序器并传送列索引与升序降序关键字
            listView1.Sort();//对列表进行自定义排序
        }


         
//排序类的定义:

        
///
        
///自定义ListView控件排序函数
        
///
        public class ListViewSort : IComparer
        {
            
private int col;
            
private bool descK;

            
public ListViewSort()
            {
                col 
= 0;
            }
            
public ListViewSort(int column, object Desc)
            {
                descK 
= (bool)Desc;
                col 
= column; //当前列,0,1,2...,参数由ListView控件的ColumnClick事件传递
            }
            
public int Compare(object x, object y)
            {
                
int tempInt = String.Compare(((ListViewItem)x).SubItems[col].Text, ((ListViewItem)y).SubItems[col].Text);
                
if (descK)
                {
                    
return -tempInt;
                }
                
else
                {
                    
return tempInt;
                }
            }
        } 

 
原创粉丝点击