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)

...
{
//设置显示方式:详细信息
lv.View = View.Details;
//显示CheckBox复选框
lv.CheckBoxes = true;
//显示网格线
lv.GridLines = true;

//鼠标所在行将以高亮度显示
lv.HotTracking = true;

//整行地选择数据
lv.FullRowSelect = true;
//建立一个标题列
ColumnHeader nameHeader = new ColumnHeader();

//设置标题列的标题
nameHeader.Text = "姓名";

//设置标题列的对齐方式
nameHeader.TextAlign = HorizontalAlignment.Center;

//设置标题列的显示宽度
nameHeader.Width = 100;

//第一种方法
//将nameHeader列添加到ListView的Columns中
lv.Columns.Add(nameHeader);

//第二种方法
lv.Columns.Add("性别",60,HorizontalAlignment.Center);
lv.Columns.Add("年纪",60,HorizontalAlignment.Center);

//建数据行
ListViewItem lstItem = new ListViewItem();

//添加第0列的值和添加其他列的值有区别
lstItem.SubItems[0].Text = "张三";
lstItem.SubItems.Add("男");
lstItem.SubItems.Add("28");

lv.Items.Add(lstItem);

lstItem = new ListViewItem();
lstItem.SubItems[0].Text = "李四";
lstItem.SubItems.Add("男");
lstItem.SubItems.Add("23");

lv.Items.Add(lstItem);
}

例:得到指定文件夹下的文件夹及文件名列表。如下图:

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;

namespace
listview

...
{
public partial class Form1 : Form

...{
public Form1()

...{
InitializeComponent();
this.ListViewSet();

}


/**//// <summary>
/// ListView 设置
/// </summary>
private void ListViewSet()

...{
this.GetFolderTreeView(@"C:");

//ListView显示方式
lv.View = View.Details;

}



/**//// <summary>
/// 得到目录中的内容
/// </summary>
private void GetFolderTreeView(string path)

...{
lv.Clear();

增加Item的标题,共有三个列#region 增加Item的标题,共有三个列
//创建标题,共三列
lv.Columns.Add("文件名",200);
lv.Columns.Add("大小",100);
lv.Columns.Add("创建日期",250);
#endregion

//开始更新
lv.BeginUpdate();

DirectoryInfo diInfo = new DirectoryInfo(path);
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);

lv.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);

lv.Items.Add(lviItem);
}
//结束更新
lv.EndUpdate();
}


/**//// <summary>
/// 定义变量存放路径
/// </summary>
string sfileName = "";


/**//// <summary>
/// 在激活一项时发生
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
private void lv_ItemActivate(object sender, EventArgs e)

...{
ListView lvControl = (ListView)sender;
//Tag属性获得与用户关联的数据
//如:C:Program FilesKuGoo2007
sfileName = lvControl.SelectedItems[0].Tag.ToString();
if (lvControl.SelectedItems[0].Text == "")

...{
// MessageBox.Show(lv.SelectedItems[0].Text);
try

...{
System.Diagnostics.Process.Start(sfileName);
}
catch

...{
return;
}
}
else

...{

GetFolderTreeView(sfileName);
}
}

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); ;
}
}

}
}
