ListView本身提供了ListViewItemSorter屬性讓用戶實現自定義的排序。
增加以下代碼可以實現妳要的功能。
?public?class?ListViewSorterAscending?:?System.Collections.IComparer{
public?int?Compare(object?x,?object?y)
{
//我們需要的是先對所有已選中的項目進行升序排列,然後對未選中的項目進行升序排列
ListViewItem?c1?=?x?as?ListViewItem;
ListViewItem?c2?=?y?as?ListViewItem;
if?(c1.Checked?&&?c2.Checked?||?!c1.Checked?&&?!c2.Checked)
return?c1.Text.CompareTo(c2.Text);
if?(c1.Checked?&&?!c2.Checked)
return?-1;
if?(!c1.Checked?&&?c2.Checked)
return?1;
return?0;
}
}
在某處生成排序器的壹個實例,賦值ListView的排序比較器屬性:
myListView.ListViewItemSorter?=?new?ListViewSorterAscending();在Button的Click事件中寫:
mylistView.Sort();需要反向排序請自行改動排序器。
備註:本例排序中參考值是Item的Text屬性,如需使用其他的屬性進行排序請自行修改。