C# ListView控件詳細(xì)介紹
首先是實(shí)現(xiàn)C# ListView控件的自定義排序,訂閱C# ListView控件的ColumnClick事件,然后介紹排序類的定義、調(diào)整C# ListView控件列寬的函數(shù),最后在窗體的Shown事件中調(diào)整C# ListView控件的列寬,即第一次顯示的時(shí)候馬上調(diào)整列寬。
- 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);- //指定排序器并傳送列索引與升序降序關(guān)鍵字
- this.listView1.Sort();//對(duì)列表進(jìn)行自定義排序
- }
排序類的定義:
- class ListViewSort : IComparer
- {
- private int col;
- private bool descK;
- public ListViewSort()
- {
- col = 0;
- }
- public ListViewSort(int column, object Desc)
- {
- descK = (bool)Desc;
- col = column; //當(dāng)前列,0,1,2...,參數(shù)由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;
- }
- }
上面的C# ListView控件的自定義排列,即單擊C# ListView控件的標(biāo)題時(shí)進(jìn)行排序
下面將實(shí)現(xiàn)C# ListView控件的最后一列的去除,即自動(dòng)調(diào)整合適的大小
首先寫一個(gè)調(diào)整C# ListView控件列寬的函數(shù)
- private void 調(diào)整LV列寬()
- {
- listView1.ColumnWidthChanged -= new
ColumnWidthChangedEventHandler(listView1_ColumnWidthChanged);- 備注.AutoResize(ColumnHeaderAutoResizeStyle.HeaderSize);
- listView1.ColumnWidthChanged += new
ColumnWidthChangedEventHandler(listView1_ColumnWidthChanged);- }
再訂閱C# ListView控件的Size_Change事件,即窗口大小被改變時(shí)調(diào)整列寬
- void listView1_SizeChanged(object sender, EventArgs e)
- {
- 調(diào)整LV列寬();
- }
最后在窗體的Shown事件中調(diào)整C# ListView控件的列寬,即第一次顯示的時(shí)候馬上調(diào)整列寬。
- private void 商品管理_Shown(object sender, EventArgs e)
- {
- 調(diào)整LV列寬();
- }
【編輯推薦】