文章详情

  • 游戏榜单
  • 软件榜单
关闭导航
热搜榜
热门下载
热门标签
php爱好者> php文档>C# ListView排序(转载)

C# ListView排序(转载)

时间:2010-11-10  来源:傅红血

http://wnhero.blog.163.com/blog/static/68653033201001943257919/

 

代码
  1 1声明
2
3 private ListViewColumnSorter lvwColumnSorter;
4
5
6 2窗体构造函数添加下面代码
7
8 // 创建一个ListView排序类的对象,并设置listView1的排序器
9 lvwColumnSorter = new ListViewColumnSorter();
10 this.listView1.ListViewItemSorter = lvwColumnSorter;
11 3.在listView1的ColumnClick事件中添加以下代码: // 检查点击的列是不是现在的排序列.
12 if ( e.Column == lvwColumnSorter.SortColumn )
13 {
14 // 重新设置此列的排序方法.
15 if (lvwColumnSorter.Order == SortOrder.Ascending)
16 {
17 lvwColumnSorter.Order = SortOrder.Descending;
18 }
19 else
20 {
21 lvwColumnSorter.Order = SortOrder.Ascending;
22 }
23 }
24 else
25 {
26 // 设置排序列,默认为正向排序
27 lvwColumnSorter.SortColumn = e.Column;
28 lvwColumnSorter.Order = SortOrder.Ascending;
29 }
30
31 // 用新的排序方法对ListView排序
32 this.listView.Sort();
33 4.添加一个类 using System.Collections;
34 using System.Windows.Forms;
35
36 /**//// <summary>
37 /// 继承自IComparer
38 /// </summary>
39 public class ListViewColumnSorter : IComparer
40 {
41 /**//// <summary>
42 /// 指定按照哪个列排序
43 /// </summary>
44 private int ColumnToSort;
45 /**//// <summary>
46 /// 指定排序的方式
47 /// </summary>
48 private SortOrder OrderOfSort;
49 /**//// <summary>
50 /// 声明CaseInsensitiveComparer类对象,
51 /// 参见ms-help://MS.VSCC.2003/MS.MSDNQTR.2003FEB.2052/cpref/html/frlrfSystemCollectionsCaseInsensitiveComparerClassTopic.htm
52 /// </summary>
53 private CaseInsensitiveComparer ObjectCompare;
54
55 /**//// <summary>
56 /// 构造函数
57 /// </summary>
58 public ListViewColumnSorter()
59 ...{
60 // 默认按第一列排序
61 ColumnToSort = 0;
62
63 // 排序方式为不排序
64 OrderOfSort = SortOrder.None;
65
66 // 初始化CaseInsensitiveComparer类对象
67 ObjectCompare = new CaseInsensitiveComparer();
68 }
69
70 /**//// <summary>
71 /// 重写IComparer接口.
72 /// </summary>
73 /// <param name="x">要比较的第一个对象</param>
74 /// <param name="y">要比较的第二个对象</param>
75 /// <returns>比较的结果.如果相等返回0,如果x大于y返回1,如果x小于y返回-1</returns>
76 public int Compare(object x, object y)
77 {
78 int compareResult;
79 ListViewItem listviewX, listviewY;
80
81 // 将比较对象转换为ListViewItem对象
82 listviewX = (ListViewItem)x;
83 listviewY = (ListViewItem)y;
84
85 // 比较
86 compareResult = ObjectCompare.Compare(listviewX.SubItems[ColumnToSort].Text,listviewY.SubItems[ColumnToSort].Text);
87
88 // 根据上面的比较结果返回正确的比较结果
89 if (OrderOfSort == SortOrder.Ascending)
90 {
91 // 因为是正序排序,所以直接返回结果
92 return compareResult;
93 }
94 else if (OrderOfSort == SortOrder.Descending)
95 {
96 // 如果是反序排序,所以要取负值再返回
97 return (-compareResult);
98 }
99 else
100 {
101 // 如果相等返回0
102 return 0;
103 }
104 }
105
106 /**//// <summary>
107 /// 获取或设置按照哪一列排序.
108 /// </summary>
109 public int SortColumn
110 {
111 set
112 {
113 ColumnToSort = value;
114 }
115 get
116 {
117 return ColumnToSort;
118 }
119 }
120
121 /**//// <summary>
122 /// 获取或设置排序方式.
123 /// </summary>
124 public SortOrder Order
125 {
126 set
127 {
128 OrderOfSort = value;
129 }
130 get
131 {
132 return OrderOfSort;
133 }
134 }
135
136 }
137

 

相关阅读 更多 +
排行榜 更多 +
梦幻甜心蛋糕店手游 v1.0 安卓版

梦幻甜心蛋糕店手游 v1.0 安卓版

休闲益智 下载
狙击手血战鬼子 v8081.23.10.7 安卓版

狙击手血战鬼子 v8081.23.10.7 安卓版

休闲益智 下载
狙击手血战鬼子 v8081.23.10.7 安卓版

狙击手血战鬼子 v8081.23.10.7 安卓版

休闲益智 下载