C# WINFORM ListView用法詳解(轉)

來源:互聯網
上載者:User

標籤:

一、ListView類

         1、常用的基本屬性:

       (1)FullRowSelect:設定是否行選擇模式。(預設為false) 提示:只有在Details視圖該屬性才有意義。

       (2) GridLines:設定行和列之間是否顯示網格線。(預設為false)提示:只有在Details視圖該屬性才有意義。

       (3)AllowColumnReorder:設定是否可拖動列標題來對改變列的順序。(預設為false)提示:只有在Details視圖該屬性才有意義。

       (4)View:擷取或設定項在控制項中的顯示方式,包括Details、LargeIcon、List、SmallIcon、Tile(預設為 LargeIcon)

       (5)MultiSelect:設定是否可以選擇多個項。(預設為false)

       (6)HeaderStyle:擷取或設定列標題樣式。

                 Clickable:列標題的作用類似於按鈕,單擊時可以執行操作(例如排序)。

                 NonClickable:列標題不響應按一下滑鼠。

                 None:不顯示列標題。

       (7)LabelEdit:設定使用者是否可以編輯控制項中項的標籤,對於Detail視圖,只能編輯行第一列的內容。(預設為false)

       (8)CheckBoxes:設定控制項中各項的旁邊是否顯示複選框。(預設為false)

       (9)LargeImageList:大表徵圖集。提示:只在LargeIcon視圖使用。

       (10)SmallImageList:小表徵圖集。提示:只有在SmallIcon視圖使用。

       (11)StateImageList:映像蒙板。這些映像蒙板可用作LargeImageList和SmallImageList映像的覆蓋圖,這些映像可用於指示項的應用程式定義的狀態。(暫時不大懂)

       (12)SelectedItems:擷取在控制項中選定的項。

       (13)CheckedItems:擷取控制項中當前複選框選中的項。

       (14)Soritng:對列表視圖的項進行排序。(預設為None)

                   Ascending:項按遞增順序排序。

                   Descending:項按遞減順序排序。

                   None:項未排序。

        (15)Scrollable:設定當沒有足夠空間來顯示所有項時是否顯示捲軸。(預設為true)

        (16)HoverSelection:設定當滑鼠指標懸停於項上時是否自動選擇項。(預設為false)

        (17)HotTracking:設定當滑鼠指標經過項文本時,其外觀是否變為超連結的形式。(預設為false)

        (18)HideSelection:設定選定項在控制項沒焦點時是否仍反白。(預設為false)

        (19)ShowGroups:設定是否以分組方式顯示項目。(預設為false);

        (20)Groups:設定分組的對象集合。

         (21)TopItem:擷取或設定控制項中的第一個可見項,可用於定位。(效果類似於EnsureVisible方法)

          2、常用方法:

         (1)BeginUpdate:避免在調用EndUpdate 方法之前描述控制項。當插入大量資料時,可以有效地避免控制項閃爍,並能大大提高速度。

         (2)EndUpdate:在BeginUpdate 方法掛起描述後,繼續描述列表視圖控制項。(結束更新)

         (3)EnsureVisible:列表視圖滾動定位到指定索引項目的選項行。(效果類似於TopItem屬性)

         (4)FindItemWithText:尋找以給定文本值開頭的第一個 ListViewItem。

          (5)FindNearestItem:按照指定的搜尋方向,從給定點開始尋找下一個項。提示:只有在LargeIcon或SmallIcon視圖才能使用該方法。

           3、常用事件:

        (1)AfterLabelEdit:當使用者編輯完項的標籤時發生,需要LabelEdit屬性為true。

        (2)BeforeLabelEdit:當使用者開始編輯項的標籤時發生。

        (3)ColumnClick:當使用者在列表視圖控制項中單擊列標題時發生。

  二、ListView的五種視圖:

       1、LargeIcon:每個項都顯示為一個最大化表徵圖,在它的下面有一個標籤。(效果見)

        2、SmallIcon:每個項都顯示為一個小表徵圖,在它的右邊帶一個標籤。(效果見)

        3、List:每個項都顯示為一個小表徵圖,在它的右邊帶一個標籤。各項排列在列中,沒有列標題。(效果見)

        4、Details:可以顯示任意的列,但只有第一列可以包含一個小表徵圖和標籤,其它的列項只能顯示文字資訊,有列表頭。(效果見)

        5、Tile:每個項都顯示為一個完整大小的表徵圖,在它的右邊帶項標籤和子項資訊。(只有Windows XP 和 Windows Server 2003 系列支援)

        ①Details視圖:

           this.listView1.SmallImageList = this.imageList1;  //將listView的表徵圖集與imageList1綁定

        (1)列表頭建立(記得,需要先建立列表頭)      

[csharp] view plaincopyprint? 
  1. ColumnHeader  ch= new ColumnHeader();  

  2.  

  3. nbsp;ch.Text = "欄位標題1";   //設定欄位標題  

  4.  

  5. ch.Width = 120;    //設定列寬度  

  6.  

  7. ch.TextAlign = HorizontalAlignment.Left;   //設定列的對齊  

  8.  

  9. this.listView1.Columns.Add(ch);    //將列頭添加到ListView控制項。  

                         或者

[csharp] view plaincopyprint? 
  1. this.listView1.Columns.Add("欄位標題1", 120,  HorizontalAlignment.Left); //一步添加  

      (2)添加資料項目      

[csharp] view plaincopyprint? 
  1.  this.listView1.BeginUpdate();   //資料更新,UI暫時掛起,直到EndUpdate繪製控制項,可以有效避免閃爍並大大提高載入速度  

  2.  

  3. for (int i = 0; i < 10; i++)   //添加10行資料  

  4. {  

  5.     ListViewItem lvi = new ListViewItem();  

  6.  

  7.     lvi.ImageIndex = i;     //通過與imageList綁定,顯示imageList中第i項表徵圖  

  8.  

  9.     lvi.Text = "subitem" + i;  

  10.  

  11.     lvi.SubItems.Add("第2列,第"+i+"行");  

  12.  

  13.     lvi.SubItems.Add("第3列,第"+i+"行");  

  14.  

  15.     this.listView1.Items.Add(lvi);  

  16. }  

  17.  

  18. this.listView1.EndUpdate();  //結束資料處理,UI介面一次性繪製。  

         (3)顯示項目

[csharp] view plaincopyprint? 
  1. foreach (ListViewItem item in this.listView1.Items)  

  2. {  

  3.      for (int i = 0; i < item.SubItems.Count; i++)  

  4.      {  

  5.          MessageBox.Show(item.SubItems[i].Text);  

  6.      }  

  7. }  

          (4)移除某項

[csharp] view plaincopyprint? 
  1. foreach (ListViewItem lvi in listView1.SelectedItems)  //選中項遍曆  

  2. {  

  3.      listView1.Items.RemoveAt(lvi.Index); // 按索引移除  

  4.      //listView1.Items.Remove(lvi);   //按項移除  

  5. }    

         (5)行高設定(利用imageList實現)

[csharp] view plaincopyprint? 
  1. ImageList imgList = new ImageList();  

  2.  

  3. imgList.ImageSize = new Size(1, 20);// 設定行高 20 //分別是寬和高  

  4.  

  5. listView1.SmallImageList = imgList; //這裡設定listView的SmallImageList ,用imgList將其撐大  

         (6)清空

[csharp] view plaincopyprint? 
  1. this.listView1.Clear();  //從控制項中移除所有項和列(包括列表頭)。  

  2.  

  3. this.listView1.Items.Clear();  //只移除所有的項。  

 

運行效果:

        ②largeIcon視圖:

[csharp] view plaincopyprint? 
  1. this.listView1.View = View.LargeIcon;  

  2.  

  3. this.listView1.LargeImageList = this.imageList2;  

  4.  

  5. this.listView1.BeginUpdate();  

  6.  

  7. for (int i = 0; i < 10; i++)  

  8. {  

  9.      ListViewItem lvi = new ListViewItem();  

  10.  

  11.      lvi.ImageIndex = i;  

  12.  

  13.      lvi.Text = "item" + i;  

  14.  

  15.      this.listView1.Items.Add(lvi);  

  16. }  

  17.  

  18. this.listView1.EndUpdate();  

運行效果:

         ③SmallIcon視圖:

[csharp] view plaincopyprint? 
  1. this.listView1.View = View.SmallIcon;  

  2.  

  3. this.listView1.SmallImageList= this.imageList1;  

  4.  

  5. this.listView1.BeginUpdate();  

  6.  

  7. for (int i = 0; i < 10; i++)  

  8. {  

  9.     ListViewItem lvi = new ListViewItem();  

  10.  

  11.      lvi.ImageIndex = i;  

  12.  

  13.      lvi.Text = "item" + i;  

  14.  

  15.      this.listView1.Items.Add(lvi);  

  16. }  

  17.  

  18. this.listView1.EndUpdate();  

運行效果:

          ④List視圖:    

[csharp] view plaincopyprint? 
  1. this.listView1.View = View.List;  

  2.  

  3. this.listView1.SmallImageList= this.imageList1;  

  4.  

  5. this.listView1.BeginUpdate();  

  6.  

  7. for (int i = 0; i < 10; i++)  

  8. {  

  9.     ListViewItem lvi = new ListViewItem();  

  10.  

  11.     lvi.ImageIndex = i;  

  12.  

  13.     lvi.Text = "item" + i;  

  14.  

  15.     this.listView1.Items.Add(lvi);  

  16. }  

  17.  

  18. this.listView1.EndUpdate();  

運行效果:

 

 

    三、其它應用

       1、分組:     

[csharp] view plaincopyprint? 
  1. ListViewGroup man_lvg = new ListViewGroup();  //建立男生分組  

  2.  

  3. man_lvg.Header = "男生";  //設定組的標題。  

  4.  

  5. //man_lvg.Name = "man";   //設定組的名稱。  

  6.  

  7. man_lvg.HeaderAlignment = HorizontalAlignment.Left;   //設定組標題文本的對齊。(預設為Left)  

  8.  

  9. ListViewGroup women_lvg = new ListViewGroup();  //建立女生分組  

  10.  

  11. women_lvg.Header = "女生";  

  12.  

  13. //women_lvg.Name = "women";  

  14.  

  15. women_lvg.HeaderAlignment = HorizontalAlignment.Center;   //組標題置中對齊  

  16.  

  17. this.listView1.Groups.Add(man_lvg);    //把男生分組添加到listview中  

  18.  

  19. this.listView1.Groups.Add(women_lvg);   //把男生分組添加到listview中  

  20.  

  21. this.listView1.ShowGroups = true;  //記得要設定ShowGroups屬性為true(預設是false),否則顯示不出分組  

  22.  

  23. for (int i = 0; i < 5; i++)  

  24. {  

  25.     ListViewItem lvi = new ListViewItem();  

  26.  

  27.     lvi.ImageIndex = i;  

  28.  

  29.     lvi.Text = "item"+i;  

  30.  

  31.     lvi.ForeColor = Color.Blue;  //設定行顏色  

  32.  

  33.     lvi.SubItems.Add("第2列,第"+i+"行");  

  34.  

  35.     lvi.SubItems.Add("第3列,第"+i+"行");  

  36.  

  37.     man_lvg.Items.Add(lvi);   //分組添加子項  

  38.  

  39.     // 或 lvi.Group = man_lvg;  //分組添加子項  

  40.  

  41.     this.listView1.Items.Add(lvi);  

  42. }  

運行效果:

         2、尋找文本(只能尋找到匹配首碼的文本且只能找出第一個符合的項):

[csharp] view plaincopyprint? 
  1. ListViewItem foundItem= this.listView1.FindItemWithText(this.textBox1.Text,true,0);    //參數1:要尋找的文本;參數2:是否子項也要尋找;參數3:開始尋找位置  

  2.  

  3. if (foundItem != null)  

  4. {  

  5.  

  6.   this.listView1.TopItem = foundItem;  //定位到該項  

  7.  

  8.   foundItem.ForeColor = Color.Red;    

  9. }  

轉自:http://blog.csdn.net/czw2010/article/details/7910324

C# WINFORM ListView用法詳解(轉)

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.