ListView可以通过四种不同的方式显示条目。 1.只能给ListView控件添加基于ListViewItem类的对象; 2.ListViewItems属性:设置用于显示的属性; 3.SubItems()方法:包含详细视图中显示的文本; 4.View属性:设置以下四种显示方式: Details:详细信息; List:列表; LargeIcon:大图标; SmallIcon:小图标。 5.Details视图需要为Columns属性使用Add()方法添加列。
例一:

namespace ListViewExercise { public partial class Form1 : Form { public Form1() { InitializeComponent(); ListViewSet(); CreateViewItemMethodOne(); //CreateViewItemMethodTow(); }
/// <summary> /// ListView 设置 /// </summary> private void ListViewSet() { //ListView显示方式 listViewControl.View = View.Details; }
/// <summary> /// //手动填加ListView方法1 /// </summary> private void CreateViewItemMethodOne() { listViewControl.BeginUpdate(); #region 增加Item的标题,共有三个列 //1、创建标题 listViewControl.Columns.Add("文件名"); listViewControl.Columns.Add("大小"); listViewControl.Columns.Add("创建日期"); #endregion
#region 手动填加ListView方法
//2、增加第一个Item,在View.Details模式下,有点像第一列中一个值 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("folder2","文件夹2",0); listViewControl.Items["folder2"].SubItems.Add("21"); listViewControl.Items["folder2"].SubItems.Add("20080115");
listViewControl.Items.Add("文件夹3"); listViewControl.Items.Add("文件夹4");
#endregion
listViewControl.EndUpdate(); }
/// <summary> /// 手动填加ListView方法2 /// </summary> private void CreateViewItemMethodTow() { #region 增加Item的标题,共有三个列 //1、创建标题,共三列 listViewControl.Columns.Add("文件名"); listViewControl.Columns.Add("大小"); listViewControl.Columns.Add("创建日期"); #endregion listViewControl.BeginUpdate();
#region 增加第一个Item //2、定义一个ListViewItem,在View.Details模式下,有点像第一列中一个值 ListViewItem lvItem; //3、定义ListViewSubItem,在View.Details模式下,有点像第二列中一个值 ListViewItem.ListViewSubItem lvSubItem;
//实列化一个Item,在View.Details模式下,有点像加第一行的第一个值 lvItem = new ListViewItem(); //Item的显示的文字 lvItem.Text = "文件夹1"; //4、Item增加到ListView控件中,即增加第一行。在View.Details模式下,有点像增加了第一个项目的第一列的第一个值 listViewControl.Items.Add(lvItem); //实例化SubItem lvSubItem = new ListViewItem.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(lvSubItem); #endregion
#region 增加第二个Item lvItem = 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.Items.Add(lvItem); #endregion
listViewControl.EndUpdate(); } } }
例二
例2:得到指定文件夹下的文件夹及文件名列表。如下图:

代码: using System.IO;
namespace ListViewExercise { public partial class Form1 : Form { public Form1() { InitializeComponent(); ListViewSet(); GetFolderTreeView(@"c:\"); }
/// <summary> /// ListView 设置 /// </summary> private void ListViewSet() { //ListView显示方式 listViewControl.View = View.Details;
//项目的双击事件 listViewControl.ItemActivate += new EventHandler(listViewControl_ItemActivate); //返回按钮的事件 btnReturn.Click+=new EventHandler(btnReturn_Click); }
/// <summary> /// 得到目录中的内容 /// </summary> private void GetFolderTreeView(string asPath) { listViewControl.Clear(); #region 增加Item的标题,共有三个列 //创建标题,共三列 listViewControl.Columns.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.ListViewSubItem lviSubItem;
foreach (DirectoryInfo di in 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(); lviSubItem.Text = di.CreationTime.ToString(); lviItem.SubItems.Add(lviSubItem);
listViewControl.Items.Add(lviItem); }
foreach (FileInfo fi in fiInfo) { lviItem = new ListViewItem(); lviItem.Text = fi.Name;
lviSubItem = new ListViewItem.ListViewSubItem(); lviSubItem.Text = fi.Length.ToString(); lviItem.SubItems.Add(lviSubItem);
lviSubItem = new ListViewItem.ListViewSubItem(); lviSubItem.Text = fi.CreationTime.ToString(); lviItem.SubItems.Add(lviSubItem);
listViewControl.Items.Add(lviItem); } //结束更新 listViewControl.EndUpdate(); }
/// <summary> /// 定义变量存放路径 /// </summary> string sfileName = "";
/// <summary> /// 项目的双击事件 /// </summary> /// <param name="sender"></param> /// <param name="e"></param> void listViewControl_ItemActivate(object sender, EventArgs e) { ListView lvControl = (ListView)sender; sfileName = lvControl.SelectedItems[0].Tag.ToString(); if (lvControl.SelectedItems[0].Tag.ToString() == "") { try { System.Diagnostics.Process.Start(sfileName); } catch { return; } } else {
GetFolderTreeView(sfileName); } }
/// <summary> /// 返回上一级 /// </summary> /// <param name="sender"></param> /// <param name="e"></param> private void 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); ; } }
} }
|