首先是實現ListView控件的自定義排序,訂閱ListVIEw控件的ColumnClick事件
1

private void listVIEw1_ColumnClick(object sender, ColumnClickEventArgs e)
2



{
3

if (this.listVIEw1.Columns[e.Column].Tag == null)
4

this.listVIEw1.Columns[e.Column].Tag = true;
5

bool tabK = (bool)this.listVIEw1.Columns[e.Column].Tag;
6

if (tabK)
7

this.listVIEw1.Columns[e.Column].Tag = false;
8

else
9

this.listVIEw1.Columns[e.Column].Tag = true;
10

this.listView1.ListViewItemSorter = new ListViewSort(e.Column, this.listVIEw1.Columns[e.Column].Tag);
11

//指定排序器並傳送列索引與升序降序關鍵字
12

this.listVIEw1.Sort();//對列表進行自定義排序
13

}
排序類的定義:
1


/**////
2

///自定義ListVIEw控件排序函數
3

///
4

class ListVIEwSort : IComparer
5



{
6

private int col;
7

private bool descK;
8

9

public ListVIEwSort()
10


{
11

col = 0;
12

}
13

public ListVIEwSort(int column, object Desc)
14


{
15

descK = (bool)Desc;
16

col = column; //當前列,0,1,2...,參數由ListVIEw控件的ColumnClick事件傳遞
17

}
18

public int Compare(object x, object y)
19


{
20

int tempInt = String.Compare(((ListViewItem)x).SubItems[col].Text, ((ListVIEwItem)y).SubItems[col].Text);
21

if (descK) return -tempInt;
22

else return tempInt;
23

}
24

}
上面的ListView控件的自定義排列,即單擊ListVIEw控件的標題時進行排序
下面將實現ListVIEw控件的最後一列的去除,即自動調整合適的大小
首先寫一個調整ListVIEw控件列寬的函數
1/**////
2

///自動調整listVIEw控件最後一列的列寬
3

///
4

private void 調整LV列寬()
5



{
6

listView1.ColumnWidthChanged -= new ColumnWidthChangedEventHandler(listVIEw1_ColumnWidthChanged);
7

備注.AutoResize(ColumnHeaderAutoResizeStyle.HeaderSize);
8

listView1.ColumnWidthChanged += new ColumnWidthChangedEventHandler(listVIEw1_ColumnWidthChanged);
9

}
上面的備注列是listview控件的最後一列的名稱,而listview控件的實例名為listVIEw1
然後訂閱ListVIEw控件的ColumnWidthChanged事件,即列寬改變時自動調整列寬
1


/**////
2

/// listvIEw列寬改變事件函數
3

///
4

void listVIEw1_ColumnWidthChanged(object sender, ColumnWidthChangedEventArgs e)
5



{
6

調整LV列寬();
7

}
再訂閱ListVIEw控件的Size_Change事件,即窗口大小被改變時調整列寬
1

void listVIEw1_SizeChanged(object sender, EventArgs e)
2



{
3

調整LV列寬();
4

}
最後在窗體的Shown事件中調整ListVIEw控件的列寬,即第一次顯示的時候馬上調整列寬
1

private void 商品管理_Shown(object sender, EventArgs e)
2



{
3

調整LV列寬();
4

}