Winfrom之listView中显示图片(五种模式:大图标、小图标、详细信息、分组、List)
程序初始化的时候:按照大图标的格式将图片加载到 ListView 控件中
主要代码:
LoadImgList(); //加载图片集合的方法
lvList.Items.Clear();
//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];//获取largeList中的key
ListViewItem li = new ListViewItem();//初始化每一项
li.Text = iText;//获取文本
li.ImageIndex = i;//获取图片
lvList.Items.Add(li);
}
}
lvList.View = View.LargeIcon;//以大图标显示
lvList.LargeImageList = largeList;//大图标
lvList.SmallImageList = smallList;//小图标
Dictionary<int,string> dic = new Dictionary<int,string>();//定义字典 存储图片的名字跟索引
//加载图片集合
private void LoadImgList()
{
string path = @"C:\Users\leiminghui\Desktop\朝夕教育训练\picture";//图片位置
if (Directory.Exists(path))//如果获取图片的位置字段不为空
{
string[] files = Directory.GetFiles(path);//获取要加载的相关图片
if (files.Length>0)
{
largeList.Images.Clear();//以防残留上次的图片 先进行清空操作
smallList.Images.Clear();
int index = 0;//定义索引
string[] fileType = { ".jpg", ".png" };//加载图片的相关格式
foreach (string fpath in files)
{
if (fileType.Contains(Path.GetExtension(fpath)))
{
Image img = Image.FromFile(fpath);//获取图片
string PthName= Path.GetFileNameWithoutExtension(fpath);//获取图片的名称
largeList.Images.Add(PthName, img);//大图标显示 PthName 图片的名称 img 图片
smallList.Images.Add(PthName, img);//小图标显示
dic.Add(index,fpath);//index 图片的索引 fpath 图片的路径
index++;
}
}
largeList.ImageSize = new Size(75,75);//大图标显示的尺寸
smallList.ImageSize = new Size(20,20);//小图标显示的尺寸
}
}
}
以大图标的形式显示 lvList.View = View.SmallIcon;//大图标 ListView控件名称.View=View.SmallIcon;

小图标显示 lvList.View = View.List;//小图标

Tile显示
lvList.View = View.Tile;//Tile

List显示 lvList.View=View.List;

以详细信息显示
lvList.Items.Clear();
lvList.Columns.Clear();
//lvList.ShowGroups = false;
lvList.View = View.Details;//详细信息
#region 列标头信息 添加
lvList.Columns.Add("文件名", 100, HorizontalAlignment.Left);
lvList.Columns.Add("修改日期", 150, HorizontalAlignment.Left);
lvList.Columns.Add("类型", 80, HorizontalAlignment.Left);
lvList.Columns.Add("大小", 60, HorizontalAlignment.Left);
#endregion
#region 项添加()
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;//获取文件大小 字节
li.SubItems.Add((length / 1024).ToString());//KB
lvList.Items.Add(li);//添加到集合中显示
}
lvList.GridLines = true;//显示网格
#endregion

以分组显示
主要代码:
lvList.ShowGroups = true;//显示分组
//添加组
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));//类型 对齐方式
//组名--数字
//键值对 Dictionary
Dictionary<string, string> dicGroup = new Dictionary<string, string>();
dicGroup.Add("动物", "01");//文件包含 01 分为A组
dicGroup.Add("人物", "02");
dicGroup.Add("风景", "03");
dicGroup.Add("游戏", "04");
//分组
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;
}
}
}



浙公网安备 33010602011771号