首先是實現ListView控制項的自訂排序,訂閱ListView控制項的ColumnClick事件
private void listView1_ColumnClick(object sender, ColumnClickEventArgs e)
{
if (this.listView1.Columns[e.Column].Tag == null)
this.listView1.Columns[e.Column].Tag = true;
bool tabK = (bool)this.listView1.Columns[e.Column].Tag;
if (tabK)
this.listView1.Columns[e.Column].Tag = false;
else
this.listView1.Columns[e.Column].Tag = true;
this.listView1.ListViewItemSorter = new ListViewSort(e.Column, this.listView1.Columns[e.Column].Tag);
//指定排序器並傳送列索引與升序降序關鍵字
this.listView1.Sort();//對列表進行自訂排序
}
排序類的定義:
///
///自訂ListView控制項排序函數
///
class ListViewSort : IComparer
{
private int col;
private bool descK;
public ListViewSort()
{
col = 0;
}
public ListViewSort(int column, object Desc)
{
descK = (bool)Desc;
col = column; //當前列,0,1,2...,參數由ListView控制項的ColumnClick事件傳遞
}
public int Compare(object x, object y)
{
int tempInt = String.Compare(((ListViewItem)x).SubItems[col].Text, ((ListViewItem)y).SubItems[col].Text);
if (descK) return -tempInt;
else return tempInt;
}
}
上面的ListView控制項的自訂排列,即單擊ListView控制項的標題時進行排序
下面將實現ListView控制項的最後一列的去除,即自動調整合適的大小
首先寫一個調整ListView控制項列寬的函數
///
///自動調整listView控制項最後一列的列寬
///
///
///
private void 調整LV列寬()
{
listView1.ColumnWidthChanged -= new ColumnWidthChangedEventHandler(listView1_ColumnWidthChanged);
備忘.AutoResize(ColumnHeaderAutoResizeStyle.HeaderSize);
listView1.ColumnWidthChanged += new ColumnWidthChangedEventHandler(listView1_ColumnWidthChanged);
}