程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> .NET網頁編程 >> .NET實例教程 >> C#中加強ListView控件的功能

C#中加強ListView控件的功能

編輯:.NET實例教程
首先是實現ListView控件的自定義排序,訂閱ListVIEw控件的ColumnClick事件


 1private 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///
 4class 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///
4private 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///
4void listVIEw1_ColumnWidthChanged(object sender, ColumnWidthChangedEventArgs e)
5{
6    調整LV列寬();
7}
 
再訂閱ListVIEw控件的Size_Change事件,即窗口大小被改變時調整列寬


1void listVIEw1_SizeChanged(object sender, EventArgs e)
2{
3 調整LV列寬();
4}
 
最後在窗體的Shown事件中調整ListVIEw控件的列寬,即第一次顯示的時候馬上調整列寬


1private void 商品管理_Shown(object sender, EventArgs e)
2{
3    調整LV列寬();
4

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved