ListView的使用 安卓listview的用法
ListView控件是一个比较复杂的控件。它可以在它的标准列表框中进行各种查看操作(如大图标,小图标,详细信息等)
下面做一个简单的例子。
创建一个新窗体form1
在上面添加几个控件如下:
再添加两个imagelist控件,取名为smallIL与largeIL,把largeIL的imagesize设为32,32,并为它的images添加两个ICON,一个为文件夹图标,一个为文件图标。也为smallIL添加两个这样的图标。
然后设置listview的smallimagelist为smallIL,largeimagelist为largeIL,view为details
下面说明一下listview显示为details(详细信息)时的几个要点:
listview的选项
列表视图中的主选项是一个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;
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();
colstr.Add(filename);//把打开的方件夹的路径记录下来,
这里是因为我们现在的路径是已知的,不用记录。
}
else//如果是文件,就执行它
{
System.Diagnostics.Process.Start(filename);
}
}
下面,再添加BACK按钮的CLICK事件处理程序,实现后退功能
private void btnback_Click(object sender, System.EventArgs e)
{
if(colstr.Count>1)
{
createitem(colstr[colstr.Count-2]);
colstr.RemoveAt(colstr.Count-1);
createHeader();
}
else if(colstr.Count==1)
{
createitem(@"c:");
createHeader();
colstr.Clear();
}
}
好了,现在所有的功能都实现了。
更多阅读
安卓手机wifi上网方法、移动GPRS接入点设置 精 联通上网接入点设置
现在的安卓系统手机都wifi上网功能,还有手机网络上网功能。但是初用安卓系统手机的朋友,对这些不是很了解,现综合一下方法,供大家使用安卓手机wifi上网方法、移动GPRS接入点设置 精——工具/原料安卓系统智能手机有网络的无线wifi信号
怎样用卡刷包刷机?安卓手机通用刷机包卡刷教程 卡刷刷机包放在哪里
怎样用卡刷包刷机?安卓手机通用刷机包卡刷教程——简介现在有很多人使用安卓手机,安卓手机给使用客户的权限也比较大。手机刷机可以解决手机出现的一些小问题,也可以换一种不同的手机风格体验。有的刷机包可以集合一些很好的功能在一体
安卓手机怎么截图? 华为手机截图
安卓手机怎么截图?——简介 使用安卓手机,可以体验到很多不同的APP,可能有时候会有截图的需要来保留当前屏幕的画面,下面介绍几种截图的方法。安卓手机怎么截图?——工具/原料安卓手机安卓手机怎么截图?——方
三星s5830刷机教程详解免费升级安装安卓4.0 ROM 三星5830系统怎么升级
这个刷机教程是我好不容易从网上找来的,其他的都不是很详细,有些不敢刷,只有这篇还算可以。我亲自试验了一下,果然刷成功了,不敢吃独食,这就给大家分享一下。三星s5830刷机教程详解免费升级安装安卓4.0 ROM——前言:三星s5830手机是2011年
安卓手机怎么隐藏加密 文件夹软件 如何隐藏加密文件夹
在使用安卓手机的过程当中,我们往往出于各种各样的原因,对于文件夹需要做一定的保护。而隐藏(加密)文件夹,不失为一种有效的方式。那么安卓手机怎么隐藏(加密)文件夹呢?首先我们对需要隐藏的文件夹重命名。命名规则很简单,在文件