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

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

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

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

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

 public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
string[] arrFileNames = System.IO.Directory.GetFiles(@"E:\五月天\Q版五月天");
Image img = null;
foreach (string name in arrFileNames)
{
img = Image.FromFile(name);
imageList1.Images.Add(img);
} PictureBox pb;
for (int i = ; i < arrFileNames.Length; i++)
{
pb = new PictureBox();
pb.Width = ;
pb.Height = ;
pb.Image = imageList1.Images[i];
pb.Location = new System.Drawing.Point(, i * );
panel1.Controls.Add(pb);
}
}
}

(二)ListView绑定多张图片

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

     public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
try
{
List<string> tifNames = new List<string>();
string path = @"E:\五月天\Q版五月天";
DirectoryInfo TheFolder = new DirectoryInfo(path);//文件路径
imgListPhoto.Images.Clear();
for (int i = ; i < TheFolder.GetFiles().Length; i++) //遍历文件夹
{
if (TheFolder.GetFiles()[i].Length > && TheFolder.GetFiles()[i].Extension == ".jpg") //或者jpg,png 文件大小要大于0且是图片文件
{
Image image = Image.FromFile(TheFolder.GetFiles()[i].DirectoryName + "\\" + TheFolder.GetFiles()[i].Name); //获取文件
tifNames.Add(TheFolder.GetFiles()[i].Name);//添加文件名
imgListPhoto.Images.Add(image);//添加图片
}
}
//初始化设置
this.listView1.View = View.LargeIcon;
this.listView1.LargeImageList = this.imgListPhoto; //开始绑定
this.listView1.BeginUpdate();
this.listView1.Items.Clear();
ListViewItem items = new ListViewItem();
items.SubItems.Clear();
for (int i = ; i < tifNames.Count; i++)
{
ListViewItem lvi = new ListViewItem();
lvi.ImageIndex = i;
lvi.Text = tifNames[i];
this.listView1.Items.Add(lvi);
Thread.Sleep();
}
this.listView1.EndUpdate();
}
catch (Exception ex)
{
//MessageBox.Show("Error");
throw new Exception(ex.Message);
}
}
}

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

winform绑定多张图片的更多相关文章

  1. WinForm 绑定到嵌套对象上的属性

    WinFrom 绑定到嵌套对象上的属性 关键字: Windows Forms, DataBindings, Nested Class, 嵌套类 在 WinForm 中很早就已经支持数据绑定, 使用数据 ...

  2. winform——绑定DataGridView

    ==========================================================================================重点需要掌握==Au ...

  3. Winform绑定数据源的几种方式?

    第一种:DataSet ds=new DataSet (); this.dataGridView1.DataSource=ds.Table[0]; 第二种:DataTable dt=new DataT ...

  4. Winform绑定图片的三种方式

    1.绝对路径: this.pictureBox2.Image=Image.FromFile("D:\\001.jpg"); 2.相对路径: Application.StartupP ...

  5. [Winform]DataGridView列自适应宽度

    引言 在做winform项目中,数据控件DataGridView的使用多多少少是会用到的,如果不设置它的属性,默认情况下是不会自适应宽度的,你想查看某项的数据,就不得不将标题栏拖来拖去,挺烦的. 方法 ...

  6. BindIPEndPointDelegate

    开发人员经常会碰到老板或上头安排的项目或需求,是自己完全陌生的领域,这个时候就会非常头痛,搜索引擎能解决大部分这些方面的问题,而有时因为自身问题或干脆找不到解决方案而非常抓狂......虽然干开发有1 ...

  7. Farseer.net轻量级开源框架 中级篇:数据绑定

    导航 目   录:Farseer.net轻量级开源框架 目录 上一篇:Farseer.net轻量级开源框架 中级篇: DbFactory数据工厂 下一篇:Farseer.net轻量级开源框架 中级篇: ...

  8. winform快速开发平台 -> 快速绑定ComboBox数据控件

    通常我们在处理编辑窗体时.往往会遇到数据绑定.例如combobox控件绑定数据字典可能是我们经常用到的.然而在我的winform快速开发平台中我是如何处理这个频繁的操作呢? 首先,我们要绑定combo ...

  9. .NET各大平台数据列表控件绑定原理及比较(WebForm、Winform、WPF)

    说说WebForm: 数据列表控件: WebForm 下的列表绑定控件基本就是GridView.DataList.Repeater:当然还有其它DropDownList.ListBox等. 它们的共同 ...

随机推荐

  1. mvc 读写txt文档

    -----------------写入内容---------------- string userfile = "UserData.txt"; StreamWriter sw = ...

  2. day 69 ORM 多表增删改查操作

    http://www.cnblogs.com/liwenzhou/p/8660826.html 下面的代码是在 python console中配置的. 关闭pycharm会消失. from app01 ...

  3. Socket编程概念

    一.网路套接字 在通信过程中,套接字是成对存在的,该套接字内部借助两个缓冲区实现 二.网络字序 1.存储方式 大端法(网络):高位存低位,低位存高位 小端法(本地):高位存高位,低位存低位 2.网络字 ...

  4. hdu4815----dp0-1背包

    /* 题目大意: 有n个问题,,告诉你答对该题能得多少分,其中一个人随机答题,问另一个人不输的概率为p 至少需要答多多少分 对于样例: 3 0.5 1 2 3 分析: 分数 0 1 2 3 3 4 5 ...

  5. SpringBoot入门之事件监听

    spring boot在启动过程中增加事件监听机制,为用户功能拓展提供极大的便利,sptingboot支持的事件类型有以下五种: ApplicationStartingEvent Applicatio ...

  6. 【NOIP2017】逛公园 最短路+DP

    诶,去年场上不会处理$0$的环,只拿了$60$有点可惜. 我们先不管边边权为$0$的边. 我们先跑一次最短路,令$dis[u]$表示从$1$至$u$的最短路的长度. 那么根据题目的要求,从起点走到$u ...

  7. POJ 1157

    #include<iostream> //成大才子---经典代码~ #include<stdio.h> #include<algorithm> #define MA ...

  8. RabbitMq qos prefetch 消息堵塞问题

    mq是实现代码扩展的有利手段,个人喜欢用概念来学习新知识,介绍堵塞问题的之前,先来段概念的学习. ConnectionFactory:创建connection的工厂类 Connection: 简单理解 ...

  9. tensorflow训练了10万次,运行完毕,对这个word2vec终于有点感觉了

    tensorflow训练了10万次,运行完毕,对这个word2vec终于有点感觉了 感觉它能找到词与词之间的关系,应该可以用来做推荐系统.自动摘要.相关搜索.联想什么的 tensorflow1.1.0 ...

  10. Django的sitemap

    1.安装 安装Sitemap APP的步骤如下: 在INSTALLED_APPS设置中添加'django.contrib.sitemaps'; 确认你的TEMPLATES设置中包含DjangoTemp ...