我想按第二列的内容(可以是“在线”或“离线”)对 ListView 项目进行排序。排序只会在代码中的一个特定位置进行,因此解决方案不必很灵活。不仅如此,它应该易于实现,并且不需要对应用程序的其余部分进行重大更改。
我试图让类实现 IComparer 并将其分配给 listView.ListViewItemSorter,但它对我不起作用。
代码示例:
class ChannelSorter : System.Collections.IComparer
{
public int Compare(object a, object b)
{
if ((a as ListViewItem).SubItems[0].Text.CompareTo("Online") == 0)
if ((b as ListViewItem).SubItems[0].Text.CompareTo("Online") == 0)
return 0;
else
return -1;
else if ((b as ListViewItem).SubItems[0].Text.CompareTo("Online") == 0)
return 1;
else
return 0;
}
}
// in constructor of Form1
listView1.ListViewItemSorter = new ChannelSorter();