1、ListView 控件的常用事件AfterLabelEdit 在編輯了標籤后,引發該事件BeforeLabelEdit 在用戶開始編輯標籤前,引發該事件ColumnClick 單擊一列時,引發該事件ItemActivate 在激活一個選項時,引發該事件其它:列表視圖的選項總是 ListViewItem 類的一個實例。ListViewItems 有一個屬性 SubItems,其中包含另一個類 ListViewSubItem 的實例。ColumnHeader:要使用列表視圖顯示列標題,需要把類 ColumnHeader 的實例添加到 ListView 的Columns 集合加。ImageList
2、控件ImageList 控件提供了一個集合,可以用於存儲在窗體的其它控件中使用的圖像。ListView 使用方法:(在 View.Details 模式下)1、建立 ListView 的標題2、建立 ListView 的 Item3、在 ListView 的 Item 中的建立 SubItem如果將各部分拆分開來的方法為:1、建立 ListView 的標題2、建立 Item3、建立 SubItem4、將 SubItem 加入到 Item 中5、將 Item 加入到 ListView 中注:在 View.Details 模式下,Item 相當於建立主列中的資料; SubItem 相當於建立其它列中
3、的資料。其它模式可以不用建立 SubItem。下邊用例子來學習。如實現下圖功能。代碼:namespace ListViewExercisepublic partial class Form1 : Formpublic Form1()InitializeComponent();ListViewSet();CreateViewItemMethodOne();/CreateViewItemMethodTow();/ / ListView 設置/ privatevoid ListViewSet()/ListView 顯示方式listViewControl.View = View.Details; /
4、/ /手動填加 ListView 方法 1/ privatevoid CreateViewItemMethodOne()listViewControl.BeginUpdate();#region 增加 Item 的標題,共有三個列/1、創建標題listViewControl.Columns.Add(“文件名“ );listViewControl.Columns.Add(“大小“ );listViewControl.Columns.Add(“創建日期“ );#endregion#region 手動填加 ListView 方法/2、增加第一個 Item,在 View.Details 模式下,有點像
5、第一列中一個值listViewControl.Items.Add(“folder1“,“文件夾 1“,0);/3、增加第一個 Item 的第一個 SubItem,在 View.Details 模式下,有點像第一列中一個值listViewControl.Items“folder1“.SubItems.Add(“11“);/增加第一個 Item 的第二個 SubItem,在 View.Details 模式下,有點像第一列中一個值listViewControl.Items“folder1“.SubItems.Add(“20080114“);listViewControl.Items.Add(“fol
6、der2“,“文件夾 2“,0);listViewControl.Items“folder2“.SubItems.Add(“21“);listViewControl.Items“folder2“.SubItems.Add(“20080115“);listViewControl.Items.Add(“文件夾 3“);listViewControl.Items.Add(“文件夾 4“);#endregionlistViewControl.EndUpdate();/ / 手動填加 ListView 方法 2/ privatevoid CreateViewItemMethodTow()#region
7、增加 Item 的標題,共有三個列/1、創建標題,共三列listViewControl.Columns.Add(“文件名“ );listViewControl.Columns.Add(“大小“ );listViewControl.Columns.Add(“創建日期“ );#endregionlistViewControl.BeginUpdate();#region 增加第一個 Item/2、定義一個 ListViewItem,在 View.Details 模式下,有點像第一列中一個值ListViewItem lvItem;/3、定義 ListViewSubItem,在 View.Details
8、 模式下,有點像第二列中一個值ListViewItem.ListViewSubItem lvSubItem;/實列化一個 Item,在 View.Details 模式下,有點像加第一行的第一個值lvItem =new ListViewItem();/Item 的顯示的文字lvItem.Text =“文件夾 1“;/4、Item 增加到 ListView 控件中,即增加第一行。在 View.Details 模式下,有點像增加了第一個項目的第一列的第一個值listViewControl.Items.Add(lvItem);/實例化 SubItemlvSubItem =new ListViewIte
9、m.ListViewSubItem();lvSubItem.Text =“10“;/5、將 SubItem 增加到第一個 Item 中,在 View.Details 模式下,有點像增加了第一個項目的第二列的第一個值lvItem.SubItems.Add(lvSubItem);lvSubItem =new ListViewItem.ListViewSubItem();lvSubItem.Text =“20080114“;/將 SubItem 增加到第一個 Item 中,在 View.Details 模式下,有點像增加了第一個項目的第三列的第一個值lvItem.SubItems.Add(lvSub
10、Item);#endregion#region 增加第二個 ItemlvItem =new ListViewItem();lvItem.Text =“文件夾 2“; lvSubItem =new ListViewItem.ListViewSubItem();lvSubItem.Text =“20“;lvItem.SubItems.Add(lvSubItem);lvSubItem =new ListViewItem.ListViewSubItem();lvSubItem.Text =“20080115“;lvItem.SubItems.Add(lvSubItem);listViewControl
11、.Items.Add(lvItem);#endregionlistViewControl.EndUpdate();例 2:得到指定文件夾下的文件夾及文件名列表。如下圖:代碼:using System.IO;namespace ListViewExercisepublicpartialclass Form1 : Formpublic Form1()InitializeComponent();ListViewSet();GetFolderTreeView(“c:/“);/ ListView 設置/privatevoid ListViewSet()/ListView 顯示方式listViewCont
12、rol.View = View.Details;/項目的雙擊事件listViewControl.ItemActivate +=new EventHandler(listViewControl_ItemActivate);/返回按鈕的事件btnReturn.Click+=new EventHandler(btnReturn_Click);/ 得到目錄中的內容/privatevoid GetFolderTreeView(string asPath)listViewControl.Clear();#region 增加 Item 的標題,共有三個列/創建標題,共三列listViewControl.Co
13、lumns.Add(“文件名“);listViewControl.Columns.Add(“大小“);listViewControl.Columns.Add(“創建日期“);#endregion/開始更新listViewControl.BeginUpdate();DirectoryInfo diInfo =new DirectoryInfo(asPath);DirectoryInfo dirs = diInfo.GetDirectories();FileInfo fiInfo = diInfo.GetFiles();ListViewItem lviItem;ListViewItem.ListV
14、iewSubItem lviSubItem;foreach (DirectoryInfo diin dirs)lviItem =new ListViewItem();lviItem.Text = di.Name;/得到文件夾的路徑lviItem.Tag = di.FullName;lviSubItem =new ListViewItem.ListViewSubItem();/文件夾沒有大小lviSubItem.Text =“;lviItem.SubItems.Add(lviSubItem);lviSubItem =new ListViewItem.ListViewSubItem();lviSu
15、bItem.Text = di.CreationTime.ToString();lviItem.SubItems.Add(lviSubItem);listViewControl.Items.Add(lviItem);foreach (FileInfo fiin fiInfo)lviItem =new ListViewItem();lviItem.Text = fi.Name;lviSubItem =new ListViewItem.ListViewSubItem();lviSubItem.Text = fi.Length.ToString();lviItem.SubItems.Add(lviS
16、ubItem);lviSubItem =new ListViewItem.ListViewSubItem();lviSubItem.Text = fi.CreationTime.ToString();lviItem.SubItems.Add(lviSubItem);listViewControl.Items.Add(lviItem);/結束更新listViewControl.EndUpdate();/ 定義變量存放路徑/string sfileName= “;/ 項目的雙擊事件/void listViewControl_ItemActivate(object sender, EventArgs
17、 e)ListView lvControl = (ListView)sender;sfileName = lvControl.SelectedItems0.Tag.ToString();if (lvControl.SelectedItems0.Tag.ToString()= “)trySystem.Diagnostics.Process.Start(sfileName);catchreturn;elseGetFolderTreeView(sfileName);/ 返回上一級/privatevoid btnReturn_Click(object sender, EventArgs e)/*原理:得到路徑,然后截取最后一個“/“之前的路徑,並將其路徑賦給你路徑變量。再次單擊返回時,截取此變量中最后一個“/“之前的路徑。當獲得不到“/“的位置時說明到達頂層。*/int iPosition= sfileName.LastIndexOf(“/“)+ 1;if (iPosition 0)string sA= sfileName.Substring(0, iPosition);GetFolderTreeView(sA);sfileName = sfileName.Substring(0, iPosition- 1); ;