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