之前参考了很多帖子和回复,网上也进行了大量搜索,主要都是说利用listView1.Sorting = SortOrder.Ascending对第一栏进行排序,或是利用Icomparer的派生类以及columnclick事件来对选定栏进行排序.
这里想请问一下,有没有办法通过click button来对特定栏(非第一栏)进行排序.或者说有没有办法通过buttonclick事件来触发特定栏的columnclick事件,谢谢.
这里想请问一下,有没有办法通过click button来对特定栏(非第一栏)进行排序.或者说有没有办法通过buttonclick事件来触发特定栏的columnclick事件,谢谢.
/// LISTVIEW排序
/// </summary>
/// <param name="LV"></param>
/// <param name="x"></param>
public static void SortList(ListView p_ListView, int p_CoulumIndex)
{
ListViewColumnSorter _ColumnSorter = new ListViewColumnSorter();
p_ListView.ListViewItemSorter = _ColumnSorter; _ColumnSorter.SortColumn = p_CoulumIndex; if (p_ListView.Columns[p_CoulumIndex].Name != "AZ")
{
_ColumnSorter.Order = System.Windows.Forms.SortOrder.Ascending;
p_ListView.Columns[p_CoulumIndex].Name = "AZ";
}
else
{
_ColumnSorter.Order = System.Windows.Forms.SortOrder.Descending;
p_ListView.Columns[p_CoulumIndex].Name = "ZA";
}
p_ListView.Sort();
}
/// <summary>
/// LIST排序 调用在 WindowsFrom.SortList 不需要直接使用
/// </summary>
private class ListViewColumnSorter : IComparer
{
private int m_ColumnToSort;
private System.Windows.Forms.SortOrder m_OrderOfSort;
private CaseInsensitiveComparer m_ObjectCompare; public ListViewColumnSorter()
{
m_ColumnToSort = 0;
m_OrderOfSort = System.Windows.Forms.SortOrder.None;
m_ObjectCompare = new CaseInsensitiveComparer();
}
public int Compare(object p_X, object p_Y)
{
int _CompareResult;
ListViewItem _ListviewX = (ListViewItem)p_X;
ListViewItem _ListviewY = (ListViewItem)p_Y;
_CompareResult = m_ObjectCompare.Compare(_ListviewX.SubItems[m_ColumnToSort].Text, _ListviewY.SubItems[m_ColumnToSort].Text); if (m_OrderOfSort == System.Windows.Forms.SortOrder.Ascending)
{
return _CompareResult;
}
else if (m_OrderOfSort == System.Windows.Forms.SortOrder.Descending)
{
return (-_CompareResult);
}
else
{
return 0;
}
}
public int SortColumn
{
set
{
m_ColumnToSort = value;
}
get
{
return m_ColumnToSort;
}
}
public System.Windows.Forms.SortOrder Order
{
set
{
m_OrderOfSort = value;
}
get
{
return m_OrderOfSort;
}
} } private void listView1_ColumnClick(object sender, ColumnClickEventArgs e)
{
SortList((ListView)sender, e.Column);
}