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

相关阅读 >>

详解C#生成随机数功能的代码示例

详解C#把datatable中数据一次插入数据库的示例代码

具体详解C#中三个关键字(params,ref,out)

.net框架-微软给出的C#编程风格代码实例

C#中关于new的用法以及和override的区别分析详解

C# 2.0 specification (四)

新手学习.net编程计划-1

C#中tostring数据类型格式大全(千分符)总结

C#构建分页应用的实例方法分析

C#实现复制和深度复制的方法详解

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




打赏

取消

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

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

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

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

评论

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