DataGridView控件中显示图片及其注意事项 【z】
windows Forms编程里面有一个DataGridView控件,它不光是可以显示数据,可以显示按钮,复选框,甚至还可以显示图片。这些图片可以来自于数据库(用二进制的方式存储的),也可以来自文件系统。下面是一个例子
【假设你有一个windows程序,并且窗体上有一个DataGridView控件,这个控件只有一个列(名称为Image),类型为DataGridViewImageColumn】
public Form1() {InitializeComponent();GetData();}private void GetData() {foreach (string s in Directory.GetFiles(@"E:\My Documents\图片收藏\表情","*.gif")){this.demoGrid.Rows.Add(s);//注意,虽然字段类型是Image,但我们这里只给它传一个图片路径过去,真正读取图片是由下面的事件处理程序做的 } }
/// <summary> /// 这个事件就在尝试对单元格进行格式化的时候触发。在这里设置真正的图片 /// </summary> /// <param name="sender"></param> /// <param name="e"></param> private void demoGrid_CellFormatting(object sender, DataGridViewCellFormattingEventArgs e) {if (demoGrid.Columns[e.ColumnIndex].Name.Equals("Image")){string path = e.Value.ToString();e.Value = GetImage(path);} }public System.Drawing.Image GetImage(string path) {return System.Drawing.Image.FromFile(path); }
以上的代码确实可以实现我们的目的,就是从一个目录中把所有的gif图片读取出来,然后显示在DataGridView上面。如下图所示
但是用Image.FromFile这个语法加载图片有一个很大的问题:该文件就被我们当前进程锁定了。不光是别的程序无法使用它,如果当前程序需要将其删除(例如我们想删除某行数据的同时把图片也删除掉),都会报告一个错误
为了解决这个问题,可以修改一下GetImage方法。如下面所示
public System.Drawing.Image GetImage(string path) {System.IO.FileStream fs = new System.IO.FileStream(path, System.IO.FileMode.Open);System.Drawing.Image result = System.Drawing.Image.FromStream(fs);fs.Close();return result;}
DataGridView控件中显示图片及其注意事项 【z】相关推荐
- 利用OpenCV在picture控件中显示图片
(1)首先要保证OpenCV的头文件已包含进程序,并且已在工程中正确lib等文件目录. (2)添加一个picture控件 (3)在对话框初始化函数(或者某按钮响应函数)中 CWnd* pwnd = G ...
- C# 选中 DataGridView 控件中的行时显示不同的颜色
可以利用 DataGridView 控件的 SelectionMode.ReadOnly 和 SelectionBackColor 属性实现当选中DataGridView控件中的行时显示不同的颜色. ...
- Visual C# 2005 - 如何于DataGridView控件中以跨数据行方式显示数据
<?XML:NAMESPACE PREFIX = O /> 图表1 一般来说,每一个字段的内容会单独显示于DataGridView控件的一个数据行中.问题是,某些字段拥有大量文字数据,我是 ...
- 在DataGridView控件中加入ComboBox下拉列表框的实现
原文 http://www.cnblogs.com/luqingfei/archive/2007/03/28/691372.html 虽然在Visual Studio中 DataGridView控件的 ...
- 获取 Windows 窗体 DataGridView 控件中选定的单元格、行和列
获取 DataGridView 控件中选中的单元格 使用 SelectedCells 属性. 注意 使用 AreAllCellsSelected 方法可避免显示可能具有大量数据的单元格. Visual ...
- 在DataGridView控件中一次显示出多个圆饼图的原始程序代码
之前我们曾经提到过,您可以在Windows Form窗体上的一个DataGridView控件中一次显示出多个圆饼图(或其它形式的统计图表)以便能够一次检视多个群组数据的比例情况(如图表1所示).当时并 ...
- wpf image控件循环显示图片 以达到动画效果 问题及解决方案
1>最初方案: 用wpf的image控件循环显示图片,达到动画效果,其实就是在后台代码动态改变Image.Source的值,关键代码: for (int i = 1; i < 601; i ...
- 【MFC】动态加载Picture Control控件中的图片
[MFC]动态加载Picture Control控件中的图片 前言 方法1:CBrush 方法2:SetBitmap 参考链接 方法3:重写MyPictureControl 前言 在MFC窗体中,我们 ...
- C#,如何提高DataGridView控件的显示效率?一次要管理100万条记录,如何才能不卡?不仅仅是虚拟模式的问题。
C#,如何提高DataGridView控件的显示效率?一次要管理100万条记录,如何才能不卡?不仅仅是虚拟模式的问题. (1)采用virtualmode,不要使用datagridview1.datas ...
最新文章
- Java新手问题 02 面向对象基本功
- #386. 【UNR #3】鸽子固定器
- matlab 自定义对象,自定义类的对象显示
- linux 调用默认程序打开文件,Excel VBA如何使用默认应用程序打开文件
- 远程桌面无法连接服务器,启动Terminal Services 服务报1053错误
- re模块中的非贪婪匹配
- 翻译的艺术 —— 名著的翻译
- Linux 网卡设备驱动程序设计(3)
- 设计模式(Design Patterns)总结归纳
- 麒麟LINUX(飞腾ARM)更新软件源
- python webdriver 从无到有搭建混合驱动自动化测试框架的过程和总结
- wgs84坐标系和国内地图坐标系的转换
- 第62篇:批量去除EXCEL文件密码
- 服务器硬件配置应如何选择?
- 用MySQL绘制新年祝福图形_qq空间留言代码之新年祝福篇
- Python boto3 遍历credential获取aws EC2基本信息
- 2022年Work-Life Balance能实现吗?
- 水文气象学数据可视化——Panoply软件的下载
- 《C++Primer》第二章-变量和基本类型-学习笔记(1)
- 查看loam的三维点云地图