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】相关推荐

  1. 利用OpenCV在picture控件中显示图片

    (1)首先要保证OpenCV的头文件已包含进程序,并且已在工程中正确lib等文件目录. (2)添加一个picture控件 (3)在对话框初始化函数(或者某按钮响应函数)中 CWnd* pwnd = G ...

  2. C# 选中 DataGridView 控件中的行时显示不同的颜色

    可以利用 DataGridView 控件的 SelectionMode.ReadOnly 和 SelectionBackColor 属性实现当选中DataGridView控件中的行时显示不同的颜色. ...

  3. Visual C# 2005 - 如何于DataGridView控件中以跨数据行方式显示数据

    <?XML:NAMESPACE PREFIX = O /> 图表1 一般来说,每一个字段的内容会单独显示于DataGridView控件的一个数据行中.问题是,某些字段拥有大量文字数据,我是 ...

  4. 在DataGridView控件中加入ComboBox下拉列表框的实现

    原文 http://www.cnblogs.com/luqingfei/archive/2007/03/28/691372.html 虽然在Visual Studio中 DataGridView控件的 ...

  5. 获取 Windows 窗体 DataGridView 控件中选定的单元格、行和列

    获取 DataGridView 控件中选中的单元格 使用 SelectedCells 属性. 注意 使用 AreAllCellsSelected 方法可避免显示可能具有大量数据的单元格. Visual ...

  6. 在DataGridView控件中一次显示出多个圆饼图的原始程序代码

    之前我们曾经提到过,您可以在Windows Form窗体上的一个DataGridView控件中一次显示出多个圆饼图(或其它形式的统计图表)以便能够一次检视多个群组数据的比例情况(如图表1所示).当时并 ...

  7. wpf image控件循环显示图片 以达到动画效果 问题及解决方案

    1>最初方案: 用wpf的image控件循环显示图片,达到动画效果,其实就是在后台代码动态改变Image.Source的值,关键代码: for (int i = 1; i < 601; i ...

  8. 【MFC】动态加载Picture Control控件中的图片

    [MFC]动态加载Picture Control控件中的图片 前言 方法1:CBrush 方法2:SetBitmap 参考链接 方法3:重写MyPictureControl 前言 在MFC窗体中,我们 ...

  9. C#,如何提高DataGridView控件的显示效率?一次要管理100万条记录,如何才能不卡?不仅仅是虚拟模式的问题。

    C#,如何提高DataGridView控件的显示效率?一次要管理100万条记录,如何才能不卡?不仅仅是虚拟模式的问题. (1)采用virtualmode,不要使用datagridview1.datas ...

最新文章

  1. Java新手问题 02 面向对象基本功
  2. #386. 【UNR #3】鸽子固定器
  3. matlab 自定义对象,自定义类的对象显示
  4. linux 调用默认程序打开文件,Excel VBA如何使用默认应用程序打开文件
  5. 远程桌面无法连接服务器,启动Terminal Services 服务报1053错误
  6. re模块中的非贪婪匹配
  7. 翻译的艺术 —— 名著的翻译
  8. Linux 网卡设备驱动程序设计(3)
  9. 设计模式(Design Patterns)总结归纳
  10. 麒麟LINUX(飞腾ARM)更新软件源
  11. python webdriver 从无到有搭建混合驱动自动化测试框架的过程和总结
  12. wgs84坐标系和国内地图坐标系的转换
  13. 第62篇:批量去除EXCEL文件密码
  14. 服务器硬件配置应如何选择?
  15. 用MySQL绘制新年祝福图形_qq空间留言代码之新年祝福篇
  16. Python boto3 遍历credential获取aws EC2基本信息
  17. 2022年Work-Life Balance能实现吗?
  18. 水文气象学数据可视化——Panoply软件的下载
  19. 《C++Primer》第二章-变量和基本类型-学习笔记(1)
  20. 查看loam的三维点云地图

热门文章

  1. 阶乘因式分解(一) -- ACM解决方案
  2. Go语言爬虫项目将结果写入MySql数据库
  3. Django学习笔记《一》图书管理系统项目挂载到阿里云
  4. C库函数与系统函数的关系
  5. 【Linux系统编程学习】 文件描述符
  6. 02-线性结构1 两个有序链表序列的合并 (15 分)
  7. 【CSS 技能提升】 :before和:after的使用
  8. Jquery的ajax提交成功后刷新页面
  9. 转载 JDK + Android-SDK + Python + MonkeyRunner 的安装
  10. 1,滑动验证,前后台接口