日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

DataGridView控件中显示图片及其注意事项 【z】

發布時間:2023/11/29 编程问答 31 豆豆
生活随笔 收集整理的這篇文章主要介紹了 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】的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。