开发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 }
(二)ListView绑定多张图片
其大概思路同上,不啰嗦了,直接附上代码
1 public partial class Form1 : Form 2 { 3 public Form1() 4 { 5 InitializeComponent(); 6 try 7 { 8 ListtifNames = 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 }
个人建议还是用ListView,而动态生成控件则可作为一种思路,在其他很多方面都可以用到的