实现C#listview点击列头排序的示例代码分享


本文摘自PHP中文网,作者黄舟,侵删。

下面小编就为大家带来一篇C# listview 点击列头排序的实例。小编觉得挺不错的,现在就分享给大家,也给大家做个参考。一起跟随小编过来看看吧

实例如下:

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29

30

31

32

33

34

35

36

37

38

39

40

41

42

43

44

45

46

47

48

49

50

51

52

53

54

55

56

57

58

59

60

61

62

63

64

65

66

67

68

69

70

71

72

73

74

75

76

77

78

79

80

81

82

83

84

85

86

87

88

89

90

91

92

93

94

95

96

97

#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点击列头排序的示例代码分享的详细内容!

相关阅读 >>

.net中创建webservice服务的实例分析(图文)

C#获取ip及判断ip是否在区间的示例代码

C#兼容各大浏览器的文件下载实例详解

C#基础入门之算法-交换的代码示例

C#实现char字符数组与字符串相互转换的方法详解

C#生成一万以内所有不重复数字的四位数

C#+js实现的两个正则替换功能示例分析

浅谈C# 之 hashtable 与 dictionary的代码实例

分享多线程下C#如何保证线程安全

C# gridcontrol的模糊查询实现代码实例

更多相关阅读请进入《C#》频道 >>




打赏

取消

感谢您的支持,我会继续努力的!

扫码支持
扫码打赏,您说多少就多少

打开支付宝扫一扫,即可进行扫码打赏哦

分享从这里开始,精彩与您同在

评论

管理员已关闭评论功能...