我想基于列对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;
}
}
此代码无法编译导致contactsListView.ListViewItemSorter为IComparer类型,类ListViewItemComparer为IComparer。
有没有办法明确地将一个投射到另一个?或者只是按照另一种方式进行排序?
提前致谢
答案 0 :(得分:1)
通用IComparer<T>
和非通用IComparer
不可相互转换。
也许您的ListViewItemComparer
应该实现非通用的IComparer
?
答案 1 :(得分:0)
我相信比较者类应该是I Comparer, not IComparer<type>
。
here is an article可能有所帮助,它使用SortDescriptions。
答案 2 :(得分:0)
试
class ListViewItemComparer : IComparer
不
class ListViewItemComparer : IComparer<ListViewItem>