Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/sorting/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 将比较器分配给ListViewItemSorter_C#_Sorting_Listview - Fatal编程技术网

C# 将比较器分配给ListViewItemSorter

C# 将比较器分配给ListViewItemSorter,c#,sorting,listview,C#,Sorting,Listview,我想根据列对C#中的ListView控件进行排序。我已创建ColumnClickEventHandler: private void contactsListView_ColumnClick(object sender, ColumnClickEventArgs e) { contactsListView.ListViewItemSorter = new ListViewItemComparer(e.Column); contactsListVie

我想根据列对C#中的ListView控件进行排序。我已创建ColumnClickEventHandler:

    private void contactsListView_ColumnClick(object sender, ColumnClickEventArgs e)
    {
        contactsListView.ListViewItemSorter = new ListViewItemComparer(e.Column);
        contactsListView.Sort();
    }
其中ListViewItemComparer类如下所示:

   class ListViewItemComparer : IComparer<ListViewItem>
{
    private int col;
    public ListViewItemComparer()
    {
        col = 0;
    }
    public ListViewItemComparer(int column)
    {
        col = column;
    }
    public int Compare(ListViewItem x, ListViewItem y)
    {
        int returnVal = -1;
        returnVal = String.Compare(x.SubItems[col].Text, y.SubItems[col].Text);
        return returnVal;
    }
}
类ListViewItemComparer:IComparer
{
私人国际学院;
公共ListViewItemComparer()
{
col=0;
}
公共ListViewItemComparer(int列)
{
col=列;
}
公共整数比较(ListViewItem x、ListViewItem y)
{
int returnVal=-1;
returnVal=String.Compare(x.SubItems[col].Text,y.SubItems[col].Text);
返回值;
}
}
由于contactsListView.ListViewItemSorter类型为IComparer,类ListViewItemComparer类型为IComparer,因此无法编译此代码

有没有一种方法可以显式地将一个强制转换为另一个?还是用另一种方式排序


提前感谢

我认为comparer类应该是I
comparer,而不是IComparer

这可能会有所帮助,它使用排序描述。

通用
IComparer
和非通用
IComparer
不能相互转换

也许您的
ListViewItemComparer
应该实现非通用的
IComparer

class ListViewItemComparer : IComparer
不是

类ListViewItemComparer:IComparer

你说得对。我忘了使用System.Collections(我只有System.Collections.Generic)。这就是为什么当我看到missing IComparer类型时,我只是将其放在:P感谢和快乐编程:)
class ListViewItemComparer : IComparer<ListViewItem>