ListView
1. ListView控件
① 属性
1) CheckBox 每一行是否带复选框 ,
2)View 5种视图 ,
2)Alignment 内容项的对齐方式
4)ShowGroups以组的形式显示项
5)Groups 组集合(类似于我的电脑硬盘组下有c,d,e盘符)
6)Items 项的集合
7)MultiSelect允许选择多项
8)SmallImageList 除大图标视图和Tile视图以外的所有视图 图像的ImageList控件
9)详细视图特有属性(View–> Detials):AllowColumnRecorder允许列排序 , Columns列名, GridLines 网格
10)大图标视图LargeIcon :自动排列AutoArrange LargeImageList大图标的图片集合
小图标视图 SmallIcon :AutoArrange
CheckedIndices勾选的索引集合 , CheckedItems勾选项的集合 , SelectedIndices选中的索引集合, SelectedItems选中的项集合
*List视图不支持 分组显示
② 事件
SelectedIndexChanged选中发生更改时
ColumnClick列标头更改时
ItemChecked状态更改
大图标视图
Dictionary<string, string> dicGroup = new Dictionary<string, string>();
//初始化
private void FrmListView2_Load(object sender, EventArgs e)
{
LoadImgList(); //加载图片
//初始化分组信息
lvList.Groups.Clear();
lvList.Groups.Add(new ListViewGroup("花", HorizontalAlignment.Center));
lvList.Groups.Add(new ListViewGroup("动物", HorizontalAlignment.Center));
lvList.Groups.Add(new ListViewGroup("人物", HorizontalAlignment.Center));
lvList.Groups.Add(new ListViewGroup("风景", HorizontalAlignment.Center));
lvList.Items.Clear();
//关系存储
dicGroup.Add("花", "04");
dicGroup.Add("动物", "01");
dicGroup.Add("人物", "02");
dicGroup.Add("风景", "03");
lvList.ShowGroups = false; //是否分组显示
if (largeList!=null && largeList.Images.Count >0)
{
for(int i=0;i<largeList.Images.Count;i++)
{
string iText = largeList.Images.Keys[i];
//添加ListView控件中的项
ListViewItem li = new ListViewItem();
li.Text = iText;
li.ImageIndex =i;
lvList.Items.Add(li);
}
}
lvList.View = View.LargeIcon; //指定视图模式
lvList.LargeImageList = largeList; //大图标使用的ImageList
lvList.SmallImageList = smallList; //除大图标以外所有视图使用的ImageList
}
详细信息视图
private void btnDetails_Click(object sender, EventArgs e)
{
lvList.Items.Clear();
lvList.Columns.Clear();
//lvList.ShowGroups = false;
lvList.View = View.Details; //设置详细信息视图
//列的添加
lvList.Columns.Add("文件名", 100, HorizontalAlignment.Left);
lvList.Columns.Add("创建日期", 150, HorizontalAlignment.Left);
lvList.Columns.Add("类型", 80, HorizontalAlignment.Left);
lvList.Columns.Add("大小", 60, HorizontalAlignment.Left);
//项
for (int i = 0; i < dic.Count; i++)
{
ListViewItem li = new ListViewItem();
li.ImageIndex = i;
li.Text = smallList.Images.Keys[i];
li.SubItems.Add(File.GetCreationTime(dic[i]).ToString());//创建日期
li.SubItems.Add(Path.GetExtension(dic[i])); //类型
long length = new FileInfo(dic[i]).Length; //获取文件大小 B
li.SubItems.Add((length / 1024).ToString()); //KB
if(lvList.ShowGroups)
{
foreach (ListViewGroup lvg in lvList.Groups)
{
//判断项文本的前面的编号是否与组所对应的编号一致,如果一致,就将该项分到这一组
if (li.Text.Substring(0, 2) == dicGroup[lvg.Header])
{
li.Group = lvg; //设置项所属的组
break;
}
}
}
lvList.Items.Add(li);
}
lvList.GridLines = true; //显示网格
}
分组视图
//分组
private void btnGroup_Click(object sender, EventArgs e)
{
lvList.ShowGroups = true;
GroupShow();
}
//分组处理
private void GroupShow()
{
for (int i = 0; i < lvList.Items.Count; i++)
{
foreach (ListViewGroup lvg in lvList.Groups)
{
//判断项文本的前面的编号是否与组所对应的编号一致,如果一致,就将该项分到这一组
if (lvList.Items[i].Text.Substring(0, 2) == dicGroup[lvg.Header])
{
lvList.Items[i].Group = lvg;//设置项所属的组
break;
}
}
}
}