listview排序的问题
private void listView1_ColumnClick(object sender, ColumnClickEventArgs e)
{
ColumnSort columnsort = new ColumnSort(e.Column);
columnsort.bAscending = (listView1.Sorting == SortOrder.Ascending);
if (columnsort.bAscending)
{
listView1.Sorting = SortOrder.Descending;
}
else
{
listView1.Sorting = SortOrder.Ascending;
}
listView1.ListViewItemSorter = columnsort;
}
public class ColumnSort : IComparer
{
private int columnNum = 0;
public bool bAscending = true;
public ColumnSort(int column_to_sort)
{
columnNum = column_to_sort;
}
public int Compare(object a, object b)
{
System.Windows.Forms.ListViewItem
listItemA = (System.Windows.Forms.ListViewItem)a;
System.Windows.Forms.ListViewItem
listItemB = (System.Windows.Forms.ListViewItem)b;
if (bAscending)
{
return String.Compare(listItemA.SubItems[columnNum].ToString(), listItemB.SubItems[columnNum].ToString());
}
else
{
return -1 * String.Compare(listItemA.SubItems[columnNum].ToString(), listItemB.SubItems[columnNum].ToString());
}
}
}
这段代码是百度搜到的关于listview排序的,但是我不太懂这段代码,而且发现在程序运行中经常出现bug,敬请高手指教!
{
ColumnSort columnsort = new ColumnSort(e.Column);
columnsort.bAscending = (listView1.Sorting == SortOrder.Ascending);
if (columnsort.bAscending)
{
listView1.Sorting = SortOrder.Descending;
}
else
{
listView1.Sorting = SortOrder.Ascending;
}
listView1.ListViewItemSorter = columnsort;
}
public class ColumnSort : IComparer
{
private int columnNum = 0;
public bool bAscending = true;
public ColumnSort(int column_to_sort)
{
columnNum = column_to_sort;
}
public int Compare(object a, object b)
{
System.Windows.Forms.ListViewItem
listItemA = (System.Windows.Forms.ListViewItem)a;
System.Windows.Forms.ListViewItem
listItemB = (System.Windows.Forms.ListViewItem)b;
if (bAscending)
{
return String.Compare(listItemA.SubItems[columnNum].ToString(), listItemB.SubItems[columnNum].ToString());
}
else
{
return -1 * String.Compare(listItemA.SubItems[columnNum].ToString(), listItemB.SubItems[columnNum].ToString());
}
}
}
这段代码是百度搜到的关于listview排序的,但是我不太懂这段代码,而且发现在程序运行中经常出现bug,敬请高手指教!
...全文


