博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
winform绑定多张图片
阅读量:4308 次
发布时间:2019-06-06

本文共 3290 字,大约阅读时间需要 10 分钟。

开发winform程序的时候经常设计到要显示多张图片的问题,其解决思路一般是先遍历文件夹中的所有图片,然后再把这些图片添加到ImageList控件中,最后再绑定显示出来。这里我们介绍两种绑定的方法:

(一)动态生成PictureBox绑定图片

(1)先在界面添加ImageList和PictureBox控件

(2)遍历文件夹中的所有图片,并添加到ImageList中

(3)根据图片的数量来动态生成PictureBox,并依次绑定显示

1 public partial class Form1 : Form 2     { 3         public Form1() 4         { 5             InitializeComponent(); 6             string[] arrFileNames = System.IO.Directory.GetFiles(@"E:\五月天\Q版五月天"); 7             Image img = null; 8             foreach (string name in arrFileNames) 9             {10                 img = Image.FromFile(name);11                 imageList1.Images.Add(img);12             }13 14             PictureBox pb;15             for (int i = 0; i < arrFileNames.Length; i++)16             {17                 pb = new PictureBox();18                 pb.Width = 130;19                 pb.Height = 170;20                 pb.Image = imageList1.Images[i];21                 pb.Location = new System.Drawing.Point(0, i * 160);22                 panel1.Controls.Add(pb);23             }24         }25     }
View Code

(二)ListView绑定多张图片

其大概思路同上,不啰嗦了,直接附上代码

1     public partial class Form1 : Form 2     { 3         public Form1() 4         { 5             InitializeComponent(); 6             try 7             { 8                 List
tifNames = new List
(); 9 string path = @"E:\五月天\Q版五月天";10 DirectoryInfo TheFolder = new DirectoryInfo(path);//文件路径 11 imgListPhoto.Images.Clear();12 for (int i = 0; i < TheFolder.GetFiles().Length; i++) //遍历文件夹 13 {14 if (TheFolder.GetFiles()[i].Length > 0 && TheFolder.GetFiles()[i].Extension == ".jpg") //或者jpg,png 文件大小要大于0且是图片文件 15 {16 Image image = Image.FromFile(TheFolder.GetFiles()[i].DirectoryName + "\\" + TheFolder.GetFiles()[i].Name); //获取文件 17 tifNames.Add(TheFolder.GetFiles()[i].Name);//添加文件名 18 imgListPhoto.Images.Add(image);//添加图片 19 }20 }21 //初始化设置 22 this.listView1.View = View.LargeIcon;23 this.listView1.LargeImageList = this.imgListPhoto;24 25 //开始绑定 26 this.listView1.BeginUpdate();27 this.listView1.Items.Clear();28 ListViewItem items = new ListViewItem();29 items.SubItems.Clear();30 for (int i = 0; i < tifNames.Count; i++)31 {32 ListViewItem lvi = new ListViewItem();33 lvi.ImageIndex = i;34 lvi.Text = tifNames[i];35 this.listView1.Items.Add(lvi);36 Thread.Sleep(200);37 }38 this.listView1.EndUpdate();39 }40 catch (Exception ex)41 {42 //MessageBox.Show("Error");43 throw new Exception(ex.Message);44 }45 }46 }
View Code

个人建议还是用ListView,而动态生成控件则可作为一种思路,在其他很多方面都可以用到的

转载于:https://www.cnblogs.com/weizhengLoveMayDay/p/3330894.html

你可能感兴趣的文章
h:panelGrid、h:panelGroup标签学习
查看>>
f:facet标签 的用法
查看>>
<h:panelgroup>相当于span元素
查看>>
java中append()的方法
查看>>
必学高级SQL语句
查看>>
经典SQL语句大全
查看>>
log日志记录是什么
查看>>
<rich:modelPanel>标签的使用
查看>>
<h:commandLink>和<h:inputLink>的区别
查看>>
<a4j:keeyAlive>的英文介绍
查看>>
关于list对象的转化问题
查看>>
VOPO对象介绍
查看>>
suse创建的虚拟机,修改ip地址
查看>>
linux的挂载的问题,重启后就挂载就没有了
查看>>
docker原始镜像启动容器并创建Apache服务器实现反向代理
查看>>
docker容器秒死的解决办法
查看>>
管理网&业务网的一些笔记
查看>>
openstack报错解决一
查看>>
openstack报错解决二
查看>>
linux source命令
查看>>