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

C#中加強ListView控件的功能

編輯:C#基礎知識
  首先是實現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列寬();
}
  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved