本文來源于網頁設計愛好者web開發社區http://www.html.org.cn收集整理,歡迎訪問。 首先是實現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);
}
上面的備注列是listview控件的最后一列的名稱,而listview控件的實例名為listview1
然后訂閱listview控件的columnwidthchanged事件,即列寬改變時自動調整列寬
///
/// listview列寬改變事件函數
///
///
///
void listview1_columnwidthchanged(object sender, columnwidthchangedeventargs e)
{
調整lv列寬();
}
再訂閱listview控件的size_change事件,即窗口大小被改變時調整列寬
void listview1_sizechanged(object sender, eventargs e)
{
調整lv列寬();
}
最后在窗體的shown事件中調整listview控件的列寬,即第一次顯示的時候馬上調整列寬
private void 商品管理_shown(object sender, eventargs e)
{
調整lv列寬();
}