日本xxxx18视频在线观看-日本xxxx1819-日本xxxwww在线观看-日本xxx-日本xx-日本www在线视频

LOGO OA教程 ERP教程 模切知識交流 PMS教程 CRM教程 開發文檔 其他文檔  
 
網站管理員

[點晴永久免費OA]在C#中實現對ListView點擊列標題自動排序功能

admin
2022年12月22日 20:11 本文熱度 1533
首先定義一個ListViewHelper類,代碼如下:
using System;
using System.Collections;
using System.Data;
using System.Windows.Forms;
using System.Drawing;

namespace Common
...{
    /**//// <summary>
    /// 模塊編號:
    /// 模塊功能:對ListView的封裝
    /// 作      者:雷友兵
    /// 編寫時間:2007-1-10
     /// </summary>
     public class ListViewHelper
    ...{
        /**//// <summary>
        /// 構造函數
         /// </summary>
         public ListViewHelper()
        ...{
            //
             // TODO: 在此處添加構造函數邏輯
             //
         }

        public static void ListView_ColumnClick(object sender, ColumnClickEventArgs e)
        ...{
            ListView lv = sender as ListView;
            // 檢查點擊的列是不是現在的排序列.
             if (e.Column == (lv.ListViewItemSorter as ListViewColumnSorter).SortColumn)
            ...{
                // 重新設置此列的排序方法.
                 if ((lv.ListViewItemSorter as ListViewColumnSorter).Order == SortOrder.Ascending)
                ...{
                    (lv.ListViewItemSorter as ListViewColumnSorter).Order = SortOrder.Descending;
                }
                else
                ...{
                    (lv.ListViewItemSorter as ListViewColumnSorter).Order = SortOrder.Ascending;
                }
            }
            else
            ...{
                // 設置排序列,默認為正向排序
                 (lv.ListViewItemSorter as ListViewColumnSorter).SortColumn = e.Column;
                (lv.ListViewItemSorter as ListViewColumnSorter).Order = SortOrder.Ascending;
            }
            // 用新的排序方法對ListView排序
             ((ListView)sender).Sort();
        }
    }

    /**//// <summary>
    /// 繼承自IComparer
     /// </summary>
     public class ListViewColumnSorter : IComparer
    ...{
        /**//// <summary>
        /// 指定按照哪個列排序
         /// </summary>
         private int ColumnToSort;

        /**//// <summary>
        /// 指定排序的方式
         /// </summary>
         private SortOrder OrderOfSort;

        /**//// <summary>
        /// 聲明CaseInsensitiveComparer類對象,
         /// 參見ms-help://MS.VSCC.2003/MS.MSDNQTR.2003FEB.2052/cpref/html/frlrfSystemCollectionsCaseInsensitiveComparerClassTopic.htm
         /// </summary>
         private CaseInsensitiveComparer ObjectCompare;

        /**//// <summary>
        /// 構造函數
         /// </summary>
         public ListViewColumnSorter()
        ...{
            // 默認按第一列排序
             ColumnToSort = 0;
            // 排序方式為不排序
             OrderOfSort = SortOrder.None;
            // 初始化CaseInsensitiveComparer類對象
             ObjectCompare = new CaseInsensitiveComparer();
        }

        /**//// <summary>
        /// 重寫IComparer接口.
         /// </summary>
         /// <param name="x">要比較的第一個對象</param>
         /// <param name="y">要比較的第二個對象</param>
         /// <returns>比較的結果.如果相等返回0,如果x大于y返回1,如果x小于y返回-1</returns>
         public int Compare(object x, object y)
        ...{
            int compareResult;
            ListViewItem listviewX, listviewY;
            // 將比較對象轉換為ListViewItem對象
             listviewX = (ListViewItem)x;
            listviewY = (ListViewItem)y;
            // 比較
             compareResult = ObjectCompare.Compare(listviewX.SubItems[ColumnToSort].Text, listviewY.SubItems[ColumnToSort].Text);
            // 根據上面的比較結果返回正確的比較結果
             if (OrderOfSort == SortOrder.Ascending)
            ...{
                // 因為是正序排序,所以直接返回結果
                 return compareResult;
            }
            else if (OrderOfSort == SortOrder.Descending)
            ...{
                // 如果是反序排序,所以要取負值再返回
                 return (-compareResult);
            }
            else
            ...{
                // 如果相等返回0
                 return 0;
            }
        }
        /**//// <summary>
        /// 獲取或設置按照哪一列排序.
         /// </summary>
         public int SortColumn
        ...{
            set
            ...{
                ColumnToSort = value;
            }
            get
            ...{
                return ColumnToSort;
            }
        }
        /**//// <summary>
        /// 獲取或設置排序方式.
         /// </summary>
         public SortOrder Order
        ...{
            set
            ...{
                OrderOfSort = value;
            }
            get
            ...{
                return OrderOfSort;
            }
        }
    }
}

以上代碼封裝后無須更改,在窗體中添加一個ListView控件,在窗體的Load事件中添加如下代碼:

private   void  Form1_Load( object  sender, EventArgs e)
{
    
 this .listView1.ListViewItemSorter  =   new  Common.ListViewColumnSorter();
    
 this .listView1.ColumnClick  +=   new  ColumnClickEventHandler(Common.ListViewHelper.ListView_ColumnClick);
}

運行一下,看看ListView單擊列標題時是不是已經實現自動排序了?


該文章在 2022/12/22 20:11:59 編輯過
關鍵字查詢
相關文章
正在查詢...
點晴ERP是一款針對中小制造業的專業生產管理軟件系統,系統成熟度和易用性得到了國內大量中小企業的青睞。
點晴PMS碼頭管理系統主要針對港口碼頭集裝箱與散貨日常運作、調度、堆場、車隊、財務費用、相關報表等業務管理,結合碼頭的業務特點,圍繞調度、堆場作業而開發的。集技術的先進性、管理的有效性于一體,是物流碼頭及其他港口類企業的高效ERP管理信息系統。
點晴WMS倉儲管理系統提供了貨物產品管理,銷售管理,采購管理,倉儲管理,倉庫管理,保質期管理,貨位管理,庫位管理,生產管理,WMS管理系統,標簽打印,條形碼,二維碼管理,批號管理軟件。
點晴免費OA是一款軟件和通用服務都免費,不限功能、不限時間、不限用戶的免費OA協同辦公管理系統。
Copyright 2010-2025 ClickSun All Rights Reserved

主站蜘蛛池模板: 国产亲子| 国产精品女a | 日韩一区二区三区视频播放 | 欧美国产日韩综合在线第四页 | 亚洲s色大片在线观看 | 欧美动漫国产欧美一区 | 日韩欧美中文字幕一字不卡 | jizz中国jizz免费 | 日本高清不卡中文字幕网 | 韩国精品一区二 | 亚洲日本中文 | 精品美脚玉足 | 国语成人自产拍在线观看 | 91午夜视频 | 精品国产乱码aaa一区二区 | 欧美va在线观看 | 欧美中文综合在线视频 | 精品网站在线观看影片 | 日韩亚洲欧美亚洲一区二区 | 日韩一区二区三区自拍偷拍 | 国产精品乱视频 | 欧美乱妇高清无乱码免费 | 国产乡下妇女三片 | 国产高清视频一区三区 | 久热精品视频在线观看18 | 日本一区二区三区高清视频 | 国产女学生破女初在线观看 | 乱码一区二区三区 | 日韩精品加勒比在线观看 | 国产高清在线精品一区二区 | 欧美日韩成人国 | 精品精品欲天堂导航 | 国产激情精品一区二区三区 | 国产清纯清纯在线播放 | www.xxx国产| 国产精品日韩中文字幕熟女 | 免费国产精品专区 | 18爆欧美v日韩v国产 | 欧美亚州视频在线播放国产 | 欧美日韩国产综合视频 | 中韩三级在线观看 |