熱點推薦:
您现在的位置: 電腦知識網 >> 編程 >> .NET編程 >> 正文

應用開發技巧 C#中加強ListView控件的功能

2013-11-13 10:08:58  來源: .NET編程 

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

  private void listView_ColumnClick(object sender ColumnClickEventArgs e)
  {
   if (thislistViewColumns[eColumn]Tag == null)
    thislistViewColumns[eColumn]Tag = true;
    bool tabK = (bool)thislistViewColumns[eColumn]Tag;
   if (tabK)
    thislistViewColumns[eColumn]Tag = false;
   else
    thislistViewColumns[eColumn]Tag = true;
    thislistViewListViewItemSorter = new ListViewSort(eColumn thislistViewColumns[eColumn]Tag); 
    //指定排序器並傳送列索引與升序降序關鍵字
    thislistViewSort();//對列表進行自定義排序
  }

  排序類的定義:

  ///
  ///自定義ListView控件排序函數
  ///

  class ListViewSort : IComparer
  {
   private int col;
   private bool descK;

  public ListViewSort()
   {
    col = ;
   }
   public ListViewSort(int column object Desc)
   {
    descK = (bool)Desc;
    col = column; //當前列參數由ListView控件的ColumnClick事件傳遞
   }
   public int Compare(object x object y)
   {
    int tempInt = StringCompare(((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列寬()
  {
   listViewColumnWidthChanged = new ColumnWidthChangedEventHandler(listView_ColumnWidthChanged);
   備注AutoResize(ColumnHeaderAutoResizeStyleHeaderSize);
   listViewColumnWidthChanged += new ColumnWidthChangedEventHandler(listView_ColumnWidthChanged);
  }

  上面的備注列是listview控件的最後一列的名稱而listview控件的實例名為listView

  然後訂閱ListView控件的ColumnWidthChanged事件即列寬改變時自動調整列寬

  ///
  /// listview列寬改變事件函數
  ///
  ///
  ///

  void listView_ColumnWidthChanged(object sender ColumnWidthChangedEventArgs e)
  {
   調整LV列寬();
  }

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

  void listView_SizeChanged(object sender EventArgs e)
  {
   調整LV列寬();
  }

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

  private void 商品管理_Shown(object sender EventArgs e)
  {
   調整LV列寬();
  }


From:http://tw.wingwit.com/Article/program/net/201311/12706.html
    推薦文章
    Copyright © 2005-2013 電腦知識網 Computer Knowledge   All rights reserved.