打印本文 打印本文 关闭窗口 关闭窗口
使用vb.net 对 Windows Form 按列排序 ListView 项目
作者:武汉SEO闵涛  文章来源:敏韬网  点击数8100  更新时间:2009/4/23 19:00:36  文章录入:mintao  责任编辑:mintao
sp;        Implements System.Collections.IComparer.Compare

        Dim returnVal as Integer = -1

        returnVal = [String].Compare(CType(x, _

                        ListViewItem).SubItems(col).Text, _

                        CType(y, ListViewItem).SubItems(col).Text)

        Return returnVal

    End Function

End Class

//C#

// Implements the manual sorting of items by column.

class ListViewItemComparer : IComparer {

    private int col;

    public ListViewItemComparer() {

        col=0;

    }

    public ListViewItemComparer(int column)

    {

        col=column;

    }

    public int Compare(object x, object y)

    {

        int returnVal = -1;

        returnVal = String.Compare(((ListViewItem)x).SubItems[col].Text,

        ((ListViewItem)y).SubItems[col].Text);

        return returnVal;

    }

}

以一个名为 CompareIComparer 接口的必要方法执行排序。这个方法将两个对象作为参数,而参数会包含要进行比较的两个项目。当在 ListView 控件的 ColumnClick 事件处理方法中调用 Sort 方法时,Sort 方法会使用已定义并已分配到 ListViewItemSorter 属性的 ListViewItemComparer 对象,并且调用其 Compare 方法。创建 ListViewItemComparer 对象后,分配给它被单击的列的索引。该列的索引用于从需要进行排序的列中访问子项目。然后,将子项目传递到 String.Compare 方法,该方法比较项目并返回三个结果中的一个。如果 x 参数中的项目小于 y 参数中的项目,则返回一个小于零的值。如果两个项目相同,则返回零。最后,如果 x 参数中的值大于 y 参数中的值,则返回一个大于零的值。Compare 方法返回的值传递回 Sort 方法,这确定正在比较的每个项目在列中的位置。Sort 方法可以根据在所选择列中排序所有子项目的需要对 Compare 方法调用任意多次。

前面的示例就完成了。如果您运行该示例并单击 ListView 控件的列标题,项目将会按字母顺序或数字顺序进行适当地排序。唯一不能正确排序的列就是包含日期信息的列。稍后本文将介绍排序日期列。

这个示例说明了在 ListView 控件中执行基本手动项目排序所需要的基本要素。接下来的部分会扩展这个示例,提供升序和降序排序功能。

升序或降序排序

ListView 控件的用户将期望具有同时以升序和降序排序项目的功能。为了实现这个功能,需要对前面的示例进行某些改动,以便使 Compare 方法可以确定要排序的项目。

上一页  [1] [2] [3] [4] [5] [6] [7] [8] [9] [10]  下一页

打印本文 打印本文 关闭窗口 关闭窗口