lvi.tag=fi.fullname;
lvsi=new system.windows.forms.listviewitem.listviewsubitem();
lvsi.text=fi.length.tostring();
lvi.subitems.add(lvsi);
lvsi=new system.windows.forms.listviewitem.listviewsubitem();
lvsi.text=fi.lastaccesstime.tostring();
lvi.subitems.add(lvsi);
this.listview1.items.add(lvi);
}
this.listview1.endupdate();
}
然后在form1的构造函数里添加:
public form1()
{
createitem(@“c:\“);//注意这两个函数的次序不能颠倒,因为createitem里有一句命令listview1.clear()
把所有的列名也都删除了,如果createheader在前,listview就没有列名了。
createheader();
}
现在运行程序,就可以看到listview里面列出了所有c:\下的文件夹与文件信息,
下面再添加四个 单选按钮的事件处理程序
private void rdosmall_checkedchanged(object sender, system.eventargs e)
{
if(this.rdosmall.checked==true)
{
this.listview1.view=view.smallicon;
}
}
private void rdolarge_checkedchanged(object sender, system.eventargs e)
{
if(this.rdolarge.checked==true)
{
this.listview1.view=view.largeicon;
}
}
private void rdodetails_checkedchanged(object sender, system.eventargs e)
{
if(this.rdodetails.checked==true)
{
this.listview1.view=view.details;
}
}
private void rdolist_checkedchanged(object sender, system.eventargs e)
{
if(this.rdolist.checked==true)
{
this.listview1.view=view.list;
}
}
现在运行程序,点击单选按钮,就可以变换listview的显示模式。
下面再为listview的itemactivate事件添加处理程序,目 的是当我们选择listview中的选项时,如果它是文件夹就打开这个文件夹,显示里面的信息,如果它是文件,就打开这个文件。
不过我们还应该注意一点,就是当我们打开一个新文件夹时,还会用到后退功能。所以,我们应该用一个字符串记录下前一个文件夹路径,用于后退到这个前一个文件夹
下面,我们在类form1中添加个成员
private system.collections.specialized.stringcollection colstr=new system.collections.specialized.stringcollection();
然后添加itemactivate的处理程序
首先在form1的构造函数里添加
this.listview1.itemactivate+=new eventhandler(listview1_itemactivate);
然后添加函数
private void listview1_itemactivate(object sender,system.eventargs e)
{
listview lv=(listview)sender;
string filename=lv.selecteditems[0].tag.tostring();
if(lv.selecteditems[0].imageindex==0)//如果是文件夹,就打开它
{
createitem(filename);
createheader();