ListView アイテムを 2 列目のコンテンツ (「オンライン」または「オフライン」のいずれか) で並べ替えたいと考えています。並べ替えはコード内の特定の 1 か所でのみ行われるため、ソリューションは柔軟である必要はありません。それ以上に、実装が簡単で、アプリケーションの残りの部分に大きな変更を必要としない必要があります。
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();