net中关于PictureBox绑定数据库的图片字段 (转载)

在Windows窗体应用中,将数据库中的BLOB字段(如图片)绑定到PictureBox并不直接。由于Image属性需要System.Drawing.Image类型,而数据库返回的是System.Byte[]。解决方法是在Format事件中处理,将Byte数组转换为Bitmap对象。在.NET中,需先将字节数组复制到MemoryStream,然后创建Bitmap。对于存在额外头部字节的情况(如Northwind数据库的Employees表),需要跳过这些字节。这个过程展示了如何在数据绑定前进行必要的数据处理。
摘要由CSDN通过智能技术生成

Windows 窗体数据绑定很适用于 BLOB 字段(即图像),但并非以默认方式来实现。如果您尝试将 Employees.Photo 列绑定到PictureBoxImage 属性,会引发一个异常。

Dim b5 As Bindingb5 = New Binding("Image", m_ds, "Employees.Photo")hired.DataBindings.Add(b5)

产生该异常的原因是所需的类型 (System.Drawing.Image) 和解析为 System.Byte[]Photo 字段的内容之间明显不兼容。使情况更为复杂的是,Northwind 的 Employees 图片还需要进行某种处理才能真正使用。

所有这些问题最后归结为,您需要的不仅仅是到成功绑定到图像的简单转换。尽管如此,您还是可以利用 Format 事件轻松完成任务。

如果您使用 C#,就不必声明全局数据成员来捕获事件。因此,您的代码可以显示如下:

Binding b5;b5 = new Binding("Image", m_ds, "Employees.Photo");b5.Format += new ConvertEventHandler(this.PictureFormat);Photo.DataBindings.Add(b5);

事件处理程序将字节数组转换为 Bitmap 对象,该对象可以安全地

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值