2013年11月22日星期五

listview中分列展示数据

listview控件就像windows资源管理器右边的内容视图,有大图标、小图标、列表、平铺、详细信息几种展示方式,我这次做的需要看目录下的文件夹和文件以及更新时间,另外再加个文件类型和大小,所以就使用详细信息的方式,具体做法如下:
1 在listview的属性窗口的View属性选择Details
2 Colomns属性中,添加需要的几列,并将Text改成要展示的列名字
3 代码中添加方法
[csharp] view plaincopy
  1. //获取文件夹和文件列表  
  2. public void GetDirectorysAndFiles(int index)  
  3. {  
  4.     string path = datatable_folders.Rows[index]["Folder"].ToString();  
  5.     string protocol = datatable_folders.Rows[index]["Protocol"].ToString();  
  6.     string username = datatable_folders.Rows[index]["Username"].ToString();  
  7.     string password = datatable_folders.Rows[index]["Password"].ToString();  
  8.     if (protocol == "local")  
  9.     {  
  10.         DirectoryInfo dirs = new DirectoryInfo(path);  
  11.         foreach (DirectoryInfo dir in dirs.GetDirectories())  
  12.         {  
  13.             ListViewItem item = new ListViewItem();  
  14.             item.Text = dir.Name;  
  15.             //item.ImageIndex =   
  16.             item.SubItems.Add(dir.LastWriteTime.ToString("yyyy-MM-dd HH:mm"));  
  17.             item.SubItems.Add("文件夹");  
  18.             item.SubItems.Add("");  
  19.             listView1.Items.Add(item);  
  20.         }  
  21.         foreach (FileInfo file in dirs.GetFiles())  
  22.         {  
  23.             ListViewItem item = new ListViewItem();  
  24.             item.Text = file.Name;  
  25.             item.SubItems.Add(file.LastWriteTime.ToString("yyyy-MM-dd HH:mm"));  
  26.             item.SubItems.Add(file.Extension);  
  27.             item.SubItems.Add(file.Length.ToString());  
  28.             listView1.Items.Add(item);  
  29.         }  
  30.     }  
  31. }  
4 在对应的事件调用此方法,我的是鼠标双击listbox中的某个Item
[csharp] view plaincopy
  1. //listbox双击事件  
  2. private void listBox_folders_MouseDoubleClick(object sender, MouseEventArgs e)  
  3. {  
  4.     int index = listBox_folders.IndexFromPoint(e.Location);  
  5.     if (index != System.Windows.Forms.ListBox.NoMatches)  
  6.     {  
  7.         GetDirectorysAndFiles(index);  
  8.     }  
  9. }  

listview的第一列可以展示图片加文字,像文件夹和文件的图标,这个可以通过文件的后缀名去注册表中取对应的图标,具体比较麻烦,我暂时先不做了,对我无关紧要的。后面的每列都是SubItem,使用SubItems.Add方法添加,注意顺序对应就好了。

没有评论:

发表评论