Kelp-Space 是記錄一些生活雜事的Blog
如有任何程式設計的問題歡迎到 飛特技術論壇 討論

2008-11-26

ListView 使用其他Column排序


執行結果就像這樣。
不使用第一排進行排序,而是使用第二或其他排來做排序。


在程式碼中加入以下class 複製程式碼(Copy to clipboard)
class ListViewItemComparer : System.Collections.IComparer
{
    private int col;
    public ListViewItemComparer()
    {
        col = 0;
    }
    public ListViewItemComparer(int column)
    {
        col = column;
    }
    public int Compare(object x, object y)
    {
        return String.Compare(((ListViewItem)x).SubItems[col].Text, ((ListViewItem)y).SubItems[col].Text);
    }
}

以下為範例程式 複製程式碼(Copy to clipboard)
private void button4_Click(object sender, EventArgs e)
{
    listView1.View = View.Details;
    listView1.Columns.Add("Column 1");
    listView1.Columns.Add("Column 2");
    listView1.Items.Add("Item0");
    listView1.Items.Add("Item1");
    listView1.Items.Add("Item2");
    listView1.Items[0].SubItems.Add("1");
    listView1.Items[1].SubItems.Add("0");
    listView1.Items[2].SubItems.Add("2");
    listView1.ListViewItemSorter = new ListViewItemComparer(1);     //使用Column 2進行排序
    listView1.Sort();
}