private class ListViewColumnSorter : System.Collections.IComparer
        {
            /// <summary>
            /// 设置要排序的列
            /// </summary>
            public int ColumnToSort;
            /// <summary>
            /// 设置排序顺序
            /// </summary>
            public System.Windows.Forms.SortOrder OrderOfSort;
            /// <summary>
            /// 大小写不敏感的比较对象
            /// </summary>
            private System.Collections.CaseInsensitiveComparer ObjectCompare;

            /// <summary>
            /// 构造
            /// </summary>
            public ListViewColumnSorter()
            {
                // 初始排序列号为0
                ColumnToSort = 0;

                // 初始设置为不排序
                OrderOfSort = System.Windows.Forms.SortOrder.None;

                // Initialize the CaseInsensitiveComparer object
                ObjectCompare = new System.Collections.CaseInsensitiveComparer();
            }

            /// <summary>
            /// 该方法继承自IComparer接口。它通过比较两个对象使用不区分大小写的比较。
            /// </summary>
            /// <param name="x">第一项</param>
            /// <param name="y">第二项</param>
            /// <returns>比较的结果。 “0“相等,负:X<Y,正X>Y
            public int Compare(object x, object y)
            {
                int compareResult;

                ListViewItem listviewX = (ListViewItem)x;
                ListViewItem listviewY = (ListViewItem)y;

                if (ColumnToSort > 0 || listviewX.SubItems.Count==1)
                {
                    // 不区分大小写比较
                    compareResult = ObjectCompare.Compare(listviewX.SubItems[ColumnToSort].Text, listviewY.SubItems[ColumnToSort].Text);
                }
                else
                {
                    int a = int.Parse(listviewX.SubItems[ColumnToSort].Text);
                    compareResult = a.CompareTo(int.Parse(listviewY.SubItems[ColumnToSort].Text));
                }

                // 计算对象比较的返回值
                if (OrderOfSort == System.Windows.Forms.SortOrder.Ascending)
                {
                    // 如果是升序
                    return compareResult;
                }
                else if (OrderOfSort == System.Windows.Forms.SortOrder.Descending)
                {
                    // 如果是降序
                    return (-compareResult);
                }
                else
                {
                    // 不比较
                    return 0;
                }
            }

        }

 

相关文章:

  • 2022-02-08
  • 2022-12-23
  • 2021-07-20
  • 2022-12-23
  • 2022-12-23
  • 2021-10-13
  • 2022-02-22
  • 2021-09-15
猜你喜欢
  • 2022-12-23
  • 2021-12-04
  • 2022-12-23
  • 2021-08-29
  • 2021-07-20
  • 2021-08-16
相关资源
相似解决方案