狠狠色丁香婷婷综合尤物/久久精品综合一区二区三区/中国有色金属学报/国产日韩欧美在线观看 - 国产一区二区三区四区五区tv

LOGO OA教程 ERP教程 模切知識交流 PMS教程 CRM教程 開發(fā)文檔 其他文檔  
 
網(wǎng)站管理員

C#中l(wèi)istview控件實現(xiàn)按照文本、數(shù)字、時間升序和降序排序

admin
2023年11月2日 15:10 本文熱度 792
【問題】:
當點擊列標題的時候,能夠完成對該列排序,再次點擊,按照該列反序排序。

 

【解決方法】:
使用  IComparer接口

 

例子:

新建一個class類:

using System;

using System.Collections.Generic;
using System.Text;
using System.Collections;

using System.Windows.Forms;


namespace sortListView
{
  class ListViewColumnSorter: IComparer
  {      
    private int ColumnToSort;// 指定按照哪個列排序  
    private SortOrder OrderOfSort;// 指定排序的方式          

    private CaseInsensitiveComparer ObjectCompare;// 聲明CaseInsensitiveComparer類對象

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

    }


    // 重寫IComparer接口.    
    // <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);
        // 根據(jù)上面的比較結果返回正確的比較結果
        if (OrderOfSort == SortOrder.Ascending)

        {

            // 因為是正序排序,所以直接返回結果

            return compareResult;
        }
        else if (OrderOfSort == SortOrder.Descending)

        {

            // 如果是反序排序,所以要取負值再返回

            return (-compareResult);
        }
        else
        {
            // 如果相等返回0
            return 0;
        }

    }


    /// 獲取或設置按照哪一列排序.    
    public int SortColumn

    {

        set

        {

             ColumnToSort = value;

        }
        get
        {
            return ColumnToSort;
        }

    }


    /// 獲取或設置排序方式.  
    public SortOrder Order

    {

        set

        {
            OrderOfSort = value;
        }
        get
        {
            return OrderOfSort;
        }

    }

   }

}

================================

頁面代碼:

namespace sortListView

{
  public partial class Form1 : Form
  {
      public Form1()
      {
        InitializeComponent();
        // 創(chuàng)建一個ListView排序類的對象,并設置listView1的排序器
        lvwColumnSorter = new ListViewColumnSorter();
        this.listView1.ListViewItemSorter = lvwColumnSorter;

      }


      private void Form1_Load(object sender, EventArgs e)

      {

       //初始化listview1.

      }


      private void listView1_ColumnClick(object sender, ColumnClickEventArgs e)

      {

       // 檢查點擊的列是不是現(xiàn)在的排序列.

        if (e.Column == lvwColumnSorter.SortColumn)
        {
            // 重新設置此列的排序方法.
            if (lvwColumnSorter.Order == SortOrder.Ascending)

            {

               lvwColumnSorter.Order = SortOrder.Descending;

            }
            else

            {

               lvwColumnSorter.Order = SortOrder.Ascending;

            }
        }
        else
        {
            // 設置排序列,默認為正向排序
            lvwColumnSorter.SortColumn = e.Column;
            lvwColumnSorter.Order = SortOrder.Ascending;
        }
        // 用新的排序方法對ListView排序
        this.listView1.Sort();      

    }


    private void button1_Click(object sender, EventArgs e)
    {
        Form2 obj = new Form2();
        obj.Show();

    }

  }

}


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