01.11 C#實戰038:WinForm控件ListView快速上手

ListView是WinForm中的一個Windows 列表視圖控件,可以通過5種不同的視圖形式來動態顯示數據的集合。ListView提供了很多基本屬性和事件,通過定義屬性和事件我們可以設計出符合我們需求的樣式及功能。

C#實戰038:WinForm控件ListView快速上手

​ListView的View視圖屬性

要想用好ListView控件我們需要先來了解下ListView的視圖模式,ListView提供了五種視圖顯示模式,分別是:

LargeIcon:每項都顯示一個最大化圖標和一個標籤(標籤在圖標的下方);

Details:需要有列表頭(否則不顯示內容),可以顯示任意的列,但只有第一欄可以包含一個小圖標和標籤(標籤在圖標的右方),其它的列項可以顯示文字信息或控件(顯示控件可以通過重寫ListView方法來實現);

SmallIcon:每個項都顯示一個小圖標和一個標籤(標籤在圖標的右方);

List:跟SmallIcon差不多,每個項都顯示一個小圖標和一個標籤(標籤在圖標的右方);各項排列在列中,沒有列標頭

Tile:每個項都顯示一個完整大小的圖標,右邊顯示一個標籤和子項信息(僅Windows XP 和 Windows Server 2003 系統支持)。

我的Dome是要獲取文件夾下載所有文件信息並將文件信息顯示在ListView列表中,它每項需要顯示多列數據顯然只有Details視圖適合我們。ListView默認視圖為LargeIcon,我們只要選擇控件在屬性中找到view屬性,選擇Details即可。

C#實戰038:WinForm控件ListView快速上手

​Details視圖結構

在Details視圖模式中,ListView為我們整個視圖控件,跟Excel表格相似有列和行的概念。Columns定義ListView標題(不算入列表數據中,就是個列表頭);items定義ListView顯示的數據項,是Item的集合;Item定義到items中的每一行(通過實例化ListViewItem獲取);SubItem則定位到了Item中的具體單元格。

C#實戰038:WinForm控件ListView快速上手

​創建列表頭

Details有個特點就是必須創建列表頭不然就算你添加了數據也無法顯示的,創建列表頭我們可以通過ColumnHeader來實現,每顯示一列就需要有一個列表頭。如果通過ColumnHeader實例化添加比較麻煩的話可以使用下面這種方式添加比較簡潔,如果列表較多的話可以用循環遍歷實現。

C#實戰038:WinForm控件ListView快速上手

列表項添加數據

向列表項中添加數據我們可以通過ListView中的item屬性來添加,多行數據可以通過for或者foreach來遍歷數據集。這裡通過folderBrowserDialog控件來選擇文件夾並拿到文件夾中的所有對象,通過foreach遍歷對象判斷對象是否文文件夾,如果是文件夾則獲取文件夾名稱如果是文件則獲取文件名,最後通過Add方法將該信息添加到ListView中的item屬性中。

C#實戰038:WinForm控件ListView快速上手

向列表項中添加多列數據

上面我們將文件名寫入了列表項中,但你會發現每行只有一條數據,在沒有定義item時默認只有一條數據。如果我們一行需要寫入多條數據該怎麼操作呢,這時候我們可以通過ListViewItem來實例化item對象,再使用SubItems.Add()方法將當行內單元格的數據添加到item集合中,最後把item集合拋給items即可。當然你也可以通過指定items下標來對指定行追加每列數據,SubItems.Add()方法會依次向後添加一列數據(注意:該列必須定義列表頭方能顯示數據)。


C#實戰038:WinForm控件ListView快速上手

列表綁定圖標

首先使用imagelist控件先生成一個圖片列表,右鍵imagelist控件->選擇圖像->添加,將你準備的圖標(支持ico圖標)添加進來。然後通過與imageList列表集合綁定來獲取每項圖標 ,選擇的不同視圖模式對應不同的綁定屬性,Details、SmallIcon、List視圖使用listView1.SmallImageList屬性,LargeIcon、Tile視圖使用listView1.LargeImageList屬性,否則圖標將無法正常顯示。

C#實戰038:WinForm控件ListView快速上手

​ 綁定只需通過ListViewItem的ImageIndex屬性指向imageList的下標即可,如果用foreach遍歷我們需要自行添加一個變量來指定下標。

C#實戰038:WinForm控件ListView快速上手

更多C#實戰技巧可以參考專欄:C#實戰系列


分享到:


相關文章: