C# listview 点击列头排序的实例
作者:jingxian 时间:2023-11-26 20:09:05
实例如下:
#region 自定义变量
int currentCol = -1;
bool sort;
#endregion//列头点击事件
private void lvw_ColumnClick(object sender, ColumnClickEventArgs e)
{
string Asc = ((char)0x25bc).ToString().PadLeft(4, ' ');
string Des = ((char)0x25b2).ToString().PadLeft(4, ' ');
if (sort == false)
{
sort = true;
string oldStr = this.lvw.Columns[e.Column].Text.TrimEnd((char)0x25bc, (char)0x25b2, ' ');
this.lvw.Columns[e.Column].Text = oldStr + Des;
}
else if (sort == true)
{
sort = false;
string oldStr = this.lvw.Columns[e.Column].Text.TrimEnd((char)0x25bc, (char)0x25b2, ' ');
this.lvw.Columns[e.Column].Text = oldStr + Asc;
}
if(lvw.Columns[e.Column].Tag.ToString()=="n")//在设计器中把列头的tag设为"n",则表示该列按数字比较器处理,否则为文本
lvw.ListViewItemSorter = new ListViewItemComparerNum(e.Column, sort);
else
lvw.ListViewItemSorter = new ListViewItemComparer(e.Column, sort);
this.lvw.Sort();
int rowCount = this.lvw.Items.Count;
if (currentCol != -1)
{
if (e.Column != currentCol)
this.lvw.Columns[currentCol].Text = this.lvw.Columns[currentCol].Text.TrimEnd((char)0x25bc, (char)0x25b2, ' ');
}
currentCol = e.Column;
}//文本比较器public class ListViewItemComparer : IComparer
{
public bool sort_b;
public SortOrder order = SortOrder.Ascending;
private int col;
public ListViewItemComparer()
{
col = 0;
}
public ListViewItemComparer(int column, bool sort)
{
col = column;
sort_b = sort;
}
public int Compare(object x, object y)
{
if (sort_b)
{
return String.Compare(((ListViewItem)x).SubItems[col].Text, ((ListViewItem)y).SubItems[col].Text);
}
else
{
return String.Compare(((ListViewItem)y).SubItems[col].Text, ((ListViewItem)x).SubItems[col].Text);
}
}
} //数字比较器
public class ListViewItemComparerNum : IComparer
{
public bool sort_b;
public SortOrder order = SortOrder.Ascending;
private int col;
public ListViewItemComparerNum()
{
col = 0;
}
public ListViewItemComparerNum(int column, bool sort)
{
col = column;
sort_b = sort;
}
public int Compare(object x, object y)
{
decimal d1=Convert.ToDecimal(((ListViewItem)x).SubItems[col].Text);
decimal d2=Convert.ToDecimal(((ListViewItem)y).SubItems[col].Text);
if (sort_b)
{
return decimal.Compare(d1,d2);
}
else
{
return decimal.Compare(d2,d1);
}
}
}
标签:c,listview,点击,排序
0
投稿
猜你喜欢
Java 中的位运算与移位运算详解
2022-03-10 09:34:19
举例讲解JDK注解的使用和自定义注解的方法
2022-06-29 17:34:52
详解Java类库的概念以及import的使用方法
2022-04-18 06:56:54
C#中的Linq To XML讲解
2021-06-29 18:39:43
详解C++ STL模拟实现forward_list
2023-06-21 02:36:04
解析android中的dip,dp,px,sp和屏幕密度
2023-09-26 20:44:38
SpringBoot2.1.4中的错误处理机制
2023-11-06 02:48:47
springmvc分层领域模型概念详解
2021-09-07 01:21:51
SpringBoot如何优雅的处理全局异常
2021-06-09 21:28:13
C#多线程处理多个队列数据的方法
2021-12-26 19:31:02
Java异常 Factory method'sqlSessionFactory'rew exception;ested exception is java.lang.NoSuchMethodError:
2022-03-25 15:06:42
Android WebView使用的技巧与一些坑
2022-10-18 12:57:23
Java中遍历Map的六种方法实现
2022-03-21 13:30:58
mybatis使用foreach查询不出结果也不报错的问题
2023-11-24 22:36:17
Android开发之ListView的简单用法及定制ListView界面操作示例
2021-10-17 13:26:15
Java中List集合去除重复数据的方法汇总
2021-07-05 14:57:21
java实现单词搜索迷宫游戏
2023-11-10 22:44:32
HDFS Balancer负载均衡器及语法详解
2023-11-18 18:30:39
C#正则表达式匹配HTML中的图片路径,图片地址代码
2023-03-10 16:33:48
springboot如何读取配置文件到静态工具类
2023-11-28 04:44:54