DataGridView控件中显示图片及其注意事项 【z】
2012-12-26 15:53
519 查看
windows Forms编程里面有一个DataGridView控件,它不光是可以显示数据,可以显示按钮,复选框,甚至还可以显示图片。这些图片可以来自于数据库(用二进制的方式存储的),也可以来自文件系统。下面是一个例子
【假设你有一个windows程序,并且窗体上有一个DataGridView控件,这个控件只有一个列(名称为Image),类型为DataGridViewImageColumn】
以上的代码确实可以实现我们的目的,就是从一个目录中把所有的gif图片读取出来,然后显示在DataGridView上面。如下图所示
![](http://images.cnblogs.com/cnblogs_com/chenxizhang/WindowsLiveWriter/DataGridView_555A/image_thumb.png)
但是用Image.FromFile这个语法加载图片有一个很大的问题:该文件就被我们当前进程锁定了。不光是别的程序无法使用它,如果当前程序需要将其删除(例如我们想删除某行数据的同时把图片也删除掉),都会报告一个错误
![](http://images.cnblogs.com/cnblogs_com/chenxizhang/WindowsLiveWriter/DataGridView_555A/image_thumb_1.png)
为了解决这个问题,可以修改一下GetImage方法。如下面所示
【假设你有一个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上面。如下图所示
![](http://images.cnblogs.com/cnblogs_com/chenxizhang/WindowsLiveWriter/DataGridView_555A/image_thumb.png)
但是用Image.FromFile这个语法加载图片有一个很大的问题:该文件就被我们当前进程锁定了。不光是别的程序无法使用它,如果当前程序需要将其删除(例如我们想删除某行数据的同时把图片也删除掉),都会报告一个错误
![](http://images.cnblogs.com/cnblogs_com/chenxizhang/WindowsLiveWriter/DataGridView_555A/image_thumb_1.png)
为了解决这个问题,可以修改一下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控件中显示图片及其注意事项
- DataGridView控件中显示图片及其注意事项
- DataGridView控件中显示图片及其注意事项
- DataGridView控件中显示图片及其注意事项
- DataGridView控件中显示图片及其注意事项
- DataGridView显示主从表示例及注意事项(转)
- VC6中使用内存DC加载并显示JPG图片的注意事项
- DataGridView显示主从表示例及注意事项
- JSP页面使用文件上传图片并且回传显示的注意事项
- C#中使用FileUpload上传图片到SQL数据库中以image类型存储并使用Image控件显示注意事项
- Android 显示图片缩放的注意事项
- vb.net实现Datagridview控件显示数据库中的图片
- VC++ MFC 图片显示不显示注意事项
- 在img里的onload事件 使图片按比例缩放 及其注意事项
- iOS不得姐项目--精华模块上拉下拉的注意事项,日期显示,重构子控制器,计算cell的高度(只计算一次),图片帖子的显示
- DataGridView显示主从表示例及注意事项
- opencart及其中国版mycncart系统安装后,商品图片所需注意事项
- 关于在delphi7中安装ocx后,控件未被显示在控件面板上的注意事项
- VC6中使用内存DC加载并显示JPG图片的注意事项
- opencart及其中国版mycncart系统安装后,商品图片所需注意事项