关闭

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

899人阅读 评论(0) 收藏 举报
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;
                }
            }
        } 
 
0
0

查看评论
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
    个人资料
    • 访问:384679次
    • 积分:7169
    • 等级:
    • 排名:第3111名
    • 原创:325篇
    • 转载:71篇
    • 译文:1篇
    • 评论:34条
    最新评论