台部落
註冊
登錄
寫文章
請輸入正確的登錄賬號或密碼
註冊
忘記密碼
首頁
listview
正文
C# ListView排序
原創
四GG
2018-08-21 22:03
1声明
private
ListViewColumnSorter lvwColumnSorter;
2窗体构造函数添加下面代码
//
创建一个ListView排序类的对象,并设置listView1的排序器
lvwColumnSorter
=
new
ListViewColumnSorter();
this
.listView1.ListViewItemSorter
=
lvwColumnSorter;
3.在listView1的ColumnClick事件中添加以下代码:
//
检查点击的列是不是现在的排序列.
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
.listView.Sort();
4.添加一个类
using
System.Collections;
using
System.Windows.Forms;
/**/
///
<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
c#
object
class
發表評論
登录
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章
解决ScrollView中listview、gridview的嵌套问题
溫華平
2019-02-23 00:00:39
C# 基于SharpPcap的局域网数据包捕获 之二 监听代码
優惠碼大使
2019-02-24 19:41:12
[C#]“冒泡排序”示例代码
五子連星
2019-02-23 13:23:12
C#数据类型
鄭美華
2019-02-23 00:20:32
C# 中的委托和事件
zachary_woo
2019-02-23 00:15:11
c#的漂亮界面
nageqd
2019-02-22 23:56:16
Cannot get a connection, pool error Timeout waiting for idle object
weiyongliang813
2019-02-23 00:25:00
ASP网站Server object error的解决办法
inveis
2019-02-22 23:49:33
网页播放器
kaizhilin
2019-02-22 23:47:17
MySQL 事务、函数、触发器、数据库备份、权限管理
死瘦宅
2019-02-24 22:35:12
包、异常
死瘦宅
2019-02-24 19:31:11
Spring Cloud Alibaba基础教程:支持的几种服务消费方式(RestTemplate、WebClient、Feign)
程序猿dd
2019-02-24 10:41:27
mongo php类
wjp13671142513
2019-02-23 13:37:36
单例模式
woaijishu_2011
2019-02-22 23:40:01
div标签中 id和 class的区别
wjgdu
2019-02-22 23:39:04
四
四GG
24小時熱門文章
最新文章
常用命名規則
C#鏈接數據庫技巧
存儲過程入門與提高(作者不詳)
C#中調用Windows 的要點
持久對象原生數據庫查詢語言 設計白皮書
最新評論文章
Mac下配置sublime實現LaTeX
https://yachay.unat.edu.pe/blog/index.php?comment_area=format_blog&comment_component=blog&comment_co
linux以太網驅動總結