实现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#中的类型系统(值类型和引用类型)的简单介绍

ants performance profiler(.net性能调优教程)

C#正则表达式匹配与替换字符串功能示例

C#中正则表达式有什么作用?匹配字符有什么含义?

具体介绍C#编程获取ip地址的方法

C# tabcontral选项卡中加载显示窗体后 实现单向参数传递测试代码示例(图)

C#之正则表达式介绍

C#遍历文件夹子目录下所有图片及遍历文件夹下的文件代码分享

C#中字符串的一般性和特殊性具体介绍(图文)

详细介绍C#批量生成随机密码必须包含数字和字母并用加密算法加密的代码案例

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




打赏

取消

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

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

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

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

评论

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