ListView
ListView
概述
ListView
控件包括
ColumnHeader(
列标题
)
和
ListViewItem(
数据行
)
。
ListView
的
Columns
属性是所有
ColumnHeader(
列标题
)
的集合。
ListView
的
Items
属性是所有
ListViewItem(
数据行
)
的集合。
lv.Items[0]
:表示lv的第一行。
lv.Items[0].lv.Items.SubItems[0].Text:
表示lv的第一行的第一列的值。
lv.Items[0].Text
与lv.Items[0].SubItems[0].Text都是访问第0行第0列
ListView
主要属性:
FocusedItes
:获取控件中当前有焦点的项。
MultiSelect
:是否可以有选取多个项。
SelectedItems
:选定的项。
Sorting
:指定
ListView
项应遵循的排序顺序。
FullRowSelect:
:设置为
.t.
时可以整行地选择数据。
HotTracking
:设置为
.t.
时,鼠标所在行将以高亮度显示。
View
:指法列表以哪种方式显示,包括:
LargetIcon(
大图标
)
、
SmallIcon(
小图标
)
、
Details(
详细信息
)
、
List(
列表
)
。默认为
LargeIcon
。
GridLine
:设置为
.t.
时控件将显示网格线。(只作用于
“
Details”
视图)
Columns
:
所有
ColumnHeader(
列标题
)
的集合。
Items
:所有
ListViewItem(
数据行
)
的集合。
为
ListView
添加列的两种方法:见代码:
public
void
getListViewMsg(ListView lv)
![](https://i-blog.csdnimg.cn/blog_migrate/a41954a27d6ad96fa2c2cf816e677448.gif)
...
{
//设置显示方式:详细信息
lv.View = View.Details;
//显示CheckBox复选框
lv.CheckBoxes = true;
//显示网格线
lv.GridLines = true;
![](https://i-blog.csdnimg.cn/blog_migrate/6a9c071a08f1dae2d3e1c512000eef41.gif)
//鼠标所在行将以高亮度显示
lv.HotTracking = true;
![](https://i-blog.csdnimg.cn/blog_migrate/6a9c071a08f1dae2d3e1c512000eef41.gif)
//整行地选择数据
lv.FullRowSelect = true;
//建立一个标题列
ColumnHeader nameHeader = new ColumnHeader();
![](https://i-blog.csdnimg.cn/blog_migrate/6a9c071a08f1dae2d3e1c512000eef41.gif)
//设置标题列的标题
nameHeader.Text = "姓名";
![](https://i-blog.csdnimg.cn/blog_migrate/6a9c071a08f1dae2d3e1c512000eef41.gif)
//设置标题列的对齐方式
nameHeader.TextAlign = HorizontalAlignment.Center;
![](https://i-blog.csdnimg.cn/blog_migrate/6a9c071a08f1dae2d3e1c512000eef41.gif)
//设置标题列的显示宽度
nameHeader.Width = 100;
![](https://i-blog.csdnimg.cn/blog_migrate/6a9c071a08f1dae2d3e1c512000eef41.gif)
//第一种方法
//将nameHeader列添加到ListView的Columns中
lv.Columns.Add(nameHeader);
![](https://i-blog.csdnimg.cn/blog_migrate/6a9c071a08f1dae2d3e1c512000eef41.gif)
//第二种方法
lv.Columns.Add("性别",60,HorizontalAlignment.Center);
lv.Columns.Add("年纪",60,HorizontalAlignment.Center);
![](https://i-blog.csdnimg.cn/blog_migrate/6a9c071a08f1dae2d3e1c512000eef41.gif)
//建数据行
ListViewItem lstItem = new ListViewItem();
![](https://i-blog.csdnimg.cn/blog_migrate/6a9c071a08f1dae2d3e1c512000eef41.gif)
//添加第0列的值和添加其他列的值有区别
lstItem.SubItems[0].Text = "张三";
lstItem.SubItems.Add("男");
lstItem.SubItems.Add("28");
![](https://i-blog.csdnimg.cn/blog_migrate/6a9c071a08f1dae2d3e1c512000eef41.gif)
lv.Items.Add(lstItem);
![](https://i-blog.csdnimg.cn/blog_migrate/6a9c071a08f1dae2d3e1c512000eef41.gif)
lstItem = new ListViewItem();
lstItem.SubItems[0].Text = "李四";
lstItem.SubItems.Add("男");
lstItem.SubItems.Add("23");
![](https://i-blog.csdnimg.cn/blog_migrate/6a9c071a08f1dae2d3e1c512000eef41.gif)
lv.Items.Add(lstItem);
}
![](https://i-blog.csdnimg.cn/blog_migrate/6810355c2f78c12e91b7997a8e8c583a.gif)
例:得到指定文件夹下的文件夹及文件名列表。如下图:
![](https://p-blog.csdn.net/images/p_blog_csdn_net/zerolsy/listview.bmp)
using
System;
using
System.Collections.Generic;
using
System.ComponentModel;
using
System.Data;
using
System.Drawing;
using
System.Text;
using
System.Windows.Forms;
using
System.IO;
![](https://i-blog.csdnimg.cn/blog_migrate/6810355c2f78c12e91b7997a8e8c583a.gif)
namespace
listview
![](https://i-blog.csdnimg.cn/blog_migrate/a41954a27d6ad96fa2c2cf816e677448.gif)
...
{
public partial class Form1 : Form
![](https://i-blog.csdnimg.cn/blog_migrate/37c8bf68cdc3cc81759c34160776bc53.gif)
...{
public Form1()
![](https://i-blog.csdnimg.cn/blog_migrate/37c8bf68cdc3cc81759c34160776bc53.gif)
...{
InitializeComponent();
this.ListViewSet();
![](https://i-blog.csdnimg.cn/blog_migrate/6a9c071a08f1dae2d3e1c512000eef41.gif)
}
![](https://i-blog.csdnimg.cn/blog_migrate/6a9c071a08f1dae2d3e1c512000eef41.gif)
![](https://i-blog.csdnimg.cn/blog_migrate/37c8bf68cdc3cc81759c34160776bc53.gif)
/**//// <summary>
/// ListView 设置
/// </summary>
private void ListViewSet()
![](https://i-blog.csdnimg.cn/blog_migrate/37c8bf68cdc3cc81759c34160776bc53.gif)
...{
this.GetFolderTreeView(@"C:");
![](https://i-blog.csdnimg.cn/blog_migrate/6a9c071a08f1dae2d3e1c512000eef41.gif)
//ListView显示方式
lv.View = View.Details;
![](https://i-blog.csdnimg.cn/blog_migrate/6a9c071a08f1dae2d3e1c512000eef41.gif)
}
![](https://i-blog.csdnimg.cn/blog_migrate/6a9c071a08f1dae2d3e1c512000eef41.gif)
![](https://i-blog.csdnimg.cn/blog_migrate/6a9c071a08f1dae2d3e1c512000eef41.gif)
![](https://i-blog.csdnimg.cn/blog_migrate/37c8bf68cdc3cc81759c34160776bc53.gif)
/**//// <summary>
/// 得到目录中的内容
/// </summary>
private void GetFolderTreeView(string path)
![](https://i-blog.csdnimg.cn/blog_migrate/37c8bf68cdc3cc81759c34160776bc53.gif)
...{
lv.Clear();
![](https://i-blog.csdnimg.cn/blog_migrate/7ff8d92cded7e0ce15e7ca1acc870052.gif)
增加Item的标题,共有三个列#region 增加Item的标题,共有三个列
//创建标题,共三列
lv.Columns.Add("文件名",200);
lv.Columns.Add("大小",100);
lv.Columns.Add("创建日期",250);
#endregion
![](https://i-blog.csdnimg.cn/blog_migrate/6a9c071a08f1dae2d3e1c512000eef41.gif)
//开始更新
lv.BeginUpdate();
![](https://i-blog.csdnimg.cn/blog_migrate/6a9c071a08f1dae2d3e1c512000eef41.gif)
DirectoryInfo diInfo = new DirectoryInfo(path);
DirectoryInfo[] dirs = diInfo.GetDirectories();
FileInfo[] fiInfo = diInfo.GetFiles();
![](https://i-blog.csdnimg.cn/blog_migrate/6a9c071a08f1dae2d3e1c512000eef41.gif)
![](https://i-blog.csdnimg.cn/blog_migrate/6a9c071a08f1dae2d3e1c512000eef41.gif)
ListViewItem lviItem;
ListViewItem.ListViewSubItem lviSubItem;
![](https://i-blog.csdnimg.cn/blog_migrate/6a9c071a08f1dae2d3e1c512000eef41.gif)
//目录名
foreach (DirectoryInfo di in dirs)
![](https://i-blog.csdnimg.cn/blog_migrate/37c8bf68cdc3cc81759c34160776bc53.gif)
...{
lviItem = new ListViewItem();
lviItem.Text = di.Name;
//得到文件夹的路径
lviItem.Tag = di.FullName;
![](https://i-blog.csdnimg.cn/blog_migrate/6a9c071a08f1dae2d3e1c512000eef41.gif)
lviSubItem = new ListViewItem.ListViewSubItem();
![](https://i-blog.csdnimg.cn/blog_migrate/6a9c071a08f1dae2d3e1c512000eef41.gif)
//文件夹没有大小
lviSubItem.Text = "";
lviItem.SubItems.Add(lviSubItem);
![](https://i-blog.csdnimg.cn/blog_migrate/6a9c071a08f1dae2d3e1c512000eef41.gif)
lviSubItem = new ListViewItem.ListViewSubItem();
lviSubItem.Text = di.CreationTime.ToString();
lviItem.SubItems.Add(lviSubItem);
![](https://i-blog.csdnimg.cn/blog_migrate/6a9c071a08f1dae2d3e1c512000eef41.gif)
lv.Items.Add(lviItem);
}
![](https://i-blog.csdnimg.cn/blog_migrate/6a9c071a08f1dae2d3e1c512000eef41.gif)
//文件名及创建时间
foreach (FileInfo fi in fiInfo)
![](https://i-blog.csdnimg.cn/blog_migrate/37c8bf68cdc3cc81759c34160776bc53.gif)
...{
lviItem = new ListViewItem();
lviItem.Text = fi.Name;
![](https://i-blog.csdnimg.cn/blog_migrate/6a9c071a08f1dae2d3e1c512000eef41.gif)
lviSubItem = new ListViewItem.ListViewSubItem();
lviSubItem.Text = fi.Length.ToString();
lviItem.SubItems.Add(lviSubItem);
![](https://i-blog.csdnimg.cn/blog_migrate/6a9c071a08f1dae2d3e1c512000eef41.gif)
lviSubItem = new ListViewItem.ListViewSubItem();
lviSubItem.Text = fi.CreationTime.ToString();
lviItem.SubItems.Add(lviSubItem);
![](https://i-blog.csdnimg.cn/blog_migrate/6a9c071a08f1dae2d3e1c512000eef41.gif)
lv.Items.Add(lviItem);
}
//结束更新
lv.EndUpdate();
}
![](https://i-blog.csdnimg.cn/blog_migrate/6a9c071a08f1dae2d3e1c512000eef41.gif)
![](https://i-blog.csdnimg.cn/blog_migrate/37c8bf68cdc3cc81759c34160776bc53.gif)
/**//// <summary>
/// 定义变量存放路径
/// </summary>
string sfileName = "";
![](https://i-blog.csdnimg.cn/blog_migrate/6a9c071a08f1dae2d3e1c512000eef41.gif)
![](https://i-blog.csdnimg.cn/blog_migrate/37c8bf68cdc3cc81759c34160776bc53.gif)
/**//// <summary>
/// 在激活一项时发生
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
private void lv_ItemActivate(object sender, EventArgs e)
![](https://i-blog.csdnimg.cn/blog_migrate/37c8bf68cdc3cc81759c34160776bc53.gif)
...{
ListView lvControl = (ListView)sender;
//Tag属性获得与用户关联的数据
//如:C:Program FilesKuGoo2007
sfileName = lvControl.SelectedItems[0].Tag.ToString();
if (lvControl.SelectedItems[0].Text == "")
![](https://i-blog.csdnimg.cn/blog_migrate/37c8bf68cdc3cc81759c34160776bc53.gif)
...{
// MessageBox.Show(lv.SelectedItems[0].Text);
try
![](https://i-blog.csdnimg.cn/blog_migrate/37c8bf68cdc3cc81759c34160776bc53.gif)
...{
System.Diagnostics.Process.Start(sfileName);
}
catch
![](https://i-blog.csdnimg.cn/blog_migrate/37c8bf68cdc3cc81759c34160776bc53.gif)
...{
return;
}
}
else
![](https://i-blog.csdnimg.cn/blog_migrate/37c8bf68cdc3cc81759c34160776bc53.gif)
...{
![](https://i-blog.csdnimg.cn/blog_migrate/6a9c071a08f1dae2d3e1c512000eef41.gif)
GetFolderTreeView(sfileName);
}
}
![](https://i-blog.csdnimg.cn/blog_migrate/6a9c071a08f1dae2d3e1c512000eef41.gif)
private void btnReturn_Click(object sender, EventArgs e)
![](https://i-blog.csdnimg.cn/blog_migrate/37c8bf68cdc3cc81759c34160776bc53.gif)
...{
![](https://i-blog.csdnimg.cn/blog_migrate/37c8bf68cdc3cc81759c34160776bc53.gif)
/**//*
原理:得到路径,然后截取最后一个""之前的路径,并将其路径赋给你路径变量。
再次单击返回时,截取此变量中最后一个""之前的路径。
当获得不到""的位置时说明到达顶层。
*/
int iPosition = sfileName.LastIndexOf("/") + 1;
if (iPosition > 0)
![](https://i-blog.csdnimg.cn/blog_migrate/37c8bf68cdc3cc81759c34160776bc53.gif)
...{
string sA = sfileName.Substring(0, iPosition);
GetFolderTreeView(sA);
sfileName = sfileName.Substring(0, iPosition - 1); ;
}
}
![](https://i-blog.csdnimg.cn/blog_migrate/6a9c071a08f1dae2d3e1c512000eef41.gif)
}
}
![](https://i-blog.csdnimg.cn/blog_migrate/6810355c2f78c12e91b7997a8e8c583a.gif)