本文来源于网页设计爱好者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列宽();
}