列表视图中的主选项是一个listviewitem类的实例,然后这个选项又有一个子选项subitems,如果listview在details模式下,子选项就会显示出来。子选项和主选项的区别是,主选项可以有图标,子选项没有。
listview的列标题
columns,也相当于列名。要显示列表题,就要把columnsheader的实例添加到listview的columns中,在listview处于details模式下 ,columnsheader为listview提供一个标题。
现在可以开始编定代码了。
我们首先写一个方法,为listview创建标题
private void createheader()//为listview添加列名
{
columnheader ch=new columnheader();
ch.text="文件名";
this.listview1.columns.add(ch);
ch=new columnheader();
ch.text="大小";
this.listview1.columns.add(ch);
ch=new columnheader();
ch.text="修改日期";
this.listview1.columns.add(ch);
}
然后再写一个方法,为listview添加选项
private void createitem(string root)
{
listviewitem lvi;
listviewitem.listviewsubitem lvsi;
system.io.directoryinfo dir=new system.io.directoryinfo(root);
system.io.directoryinfo[] dirs=dir.getdirectories();
system.io.fileinfo[] files=dir.getfiles();
listview1.clear();//注意这个函数是把listview里的所有选项与所列名都删除
listview1.beginupdate();
foreach(system.io.directoryinfo di in dirs)
{
lvi=new listviewitem();
lvi.text=di.name;
lvi.tag=di.fullname;
lvi.imageindex=0;
lvsi=new system.windows.forms.listviewitem.listviewsubitem();
lvsi.text="";
lvi.subitems.add(lvsi);
lvsi=new system.windows.forms.listviewitem.listviewsubitem();
lvsi.text=di.lastaccesstime.tostring();
lvi.subitems.add(lvsi);
this.listview1.items.add(lvi);
}
foreach(system.io.fileinfo fi in files)//把文件信息添加到listview的选项中
{
lvi=new listviewitem();
lvi.text=fi.name;
lvi.imageindex=1;