-
大小: 31KB文件類型: .rar金幣: 2下載: 0 次發布日期: 2021-06-01
- 語言: C#
- 標簽: DataGridView??WebClient??異步加載??
資源簡介
Winform中的DataGridView,支持顯示圖片的一種列類型(Column Type),叫 DataGridViewImageColumn ,顯示圖片就是用這種列,但是這種列不支持網絡地址,要顯示網絡上的圖片,必須下載到本地,由于一個datagridview中顯示的數據量可能比較大,如果每行的圖片都是同步顯示,則程序會長時間的BLOCK住,UE會很差,所以需要采用異步加載的方式。

代碼片段和文件信息
/*--------------------------------------
?*?
?*?Coding?By?DeltaCat
?*?
?*?http://www.zu14.cn
?*?
?*?2008.11.21
?*?
?--------------------------------------*/?
using?System;
using?System.Collections.Generic;
using?System.ComponentModel;
using?System.Data;
using?System.Drawing;
using?System.Text;
using?System.Net;
using?System.Windows.Forms;
namespace?DataGridView_WebImageColumn
{
????public?partial?class?Form1?:?Form
????{
????????public?Form1()
????????{
????????????InitializeComponent();
????????}
????????///?
????????///?手動添加模擬數據
????????///?
????????///?
????????///?
????????private?void?button1_Click(object?sender?EventArgs?e)
????????{
????????????this.button1.Enabled?=?false;
????????????Random?rnd?=?new?Random();
????????????////手動添加5條測試數據
????????????for?(int?i?=?1;?i?6;?i++)
????????????{
????????????????this.dataGridView1.Rows.Add(i.ToString()?“產品“?+?i.ToString()
????????????????????string.Format(
????????????????????System.Globalization.CultureInfo.InvariantCulture
????????????????????“¥{0:#.00}“
????????????????????rnd.NextDouble()?*?10000)
????????????????????null);
????????????}
????????}
????????///?
????????///?處理dataGridView1的RowsAdded事件,在每行被載入后,即開始異步獲取圖片
????????///?
????????///?
????????///?
????????private?void?dataGridView1_RowsAdded(object?sender?DataGridViewRowsAddedEventArgs?e)
????????{
????????????////利用?WebClient?來下載圖片
????????????using?(WebClient?wc?=?new?WebClient())
????????????{
????????????????////WebClient?下載完畢的響應事件綁定
????????????????wc.DownloadDataCompleted?+=?new?DownloadDataCompletedEventHandler(wc_DownloadDataCompleted);
????????????????////開始異步下載,圖片URL路徑請根據實際情況自己去指定
????????????????////同時將DataGridView當前行的行號傳遞過去,用于指定圖片顯示的CELL
????????????????wc.DownloadDataAsync(new?Uri(string.Format(“http://www.zu14.cn/tip/{0}.gif“?e.RowIndex?+?5))?
????????????????????e.RowIndex);
????????????}
????????}
????????///?
????????///?圖片下載完畢,顯示于對應的CELL
????????///?
????????///?
????????///?
????????void?wc_DownloadDataCompleted(object?sender?DownloadDataCompletedEventArgs?e)
????????{
????????????////如果下載過程未發生錯誤,并且未被中途取消
????????????if?(e.Error?==?null?&&?!e.Cancelled)
????????????{
????????????????////將圖片顯示于對應的指定單元格,?e.UserState?就是傳入的?e.RowIndex
????????????????////e.Result?就是下載結果
????????????????this.dataGridView1.Rows[(int)e.UserState].Cells[“PictureColumn“].Value?=?e.Result;
????????????}
????????}
????}
}
?屬性????????????大小?????日期????時間???名稱
-----------?---------??----------?-----??----
?????文件???????6574??2008-11-21?11:00??Form1.resx
?????文件????????497??2008-11-21?09:57??Program.cs
?????文件??????24576??2008-11-21?14:09??bin\Debug\DataGridView_WebImageColumn.exe
?????文件??????26112??2008-11-21?14:09??bin\Debug\DataGridView_WebImageColumn.pdb
?????文件???????5632??2008-11-21?14:09??bin\Debug\DataGridView_WebImageColumn.vshost.exe
?????文件???????1072??2008-11-21?14:09??obj\DataGridView_WebImageColumn.csproj.FileListAbsolute.txt
?????文件????????842??2008-11-21?11:00??obj\Debug\DataGridView_WebImageColumn.csproj.GenerateResource.Cache
?????文件??????24576??2008-11-21?14:09??obj\Debug\DataGridView_WebImageColumn.exe
?????文件????????180??2008-11-21?11:00??obj\Debug\DataGridView_WebImageColumn.Form1.resources
?????文件??????26112??2008-11-21?14:09??obj\Debug\DataGridView_WebImageColumn.pdb
?????文件????????180??2008-11-21?10:09??obj\Debug\DataGridView_WebImageColumn.Properties.Resources.resources
?????文件???????1312??2008-11-21?09:57??Properties\AssemblyInfo.cs
?????文件???????2883??2008-11-21?09:57??Properties\Resources.Designer.cs
?????文件???????5612??2008-11-21?09:57??Properties\Resources.resx
?????文件???????1112??2008-11-21?09:57??Properties\Settings.Designer.cs
?????文件????????249??2008-11-21?09:57??Properties\Settings.settings
?????文件???????3261??2008-11-21?14:08??DataGridView_WebImageColumn.csproj
?????文件????????942??2008-11-21?09:57??DataGridView_WebImageColumn.sln
?????文件???????3022??2008-11-21?13:55??Form1.cs
?????文件???????5312??2008-11-21?11:00??Form1.Designer.cs
?????目錄??????????0??2008-11-21?09:57??obj\Debug\TempPE
?????目錄??????????0??2008-11-21?10:09??bin\Debug
?????目錄??????????0??2008-11-21?14:09??obj\Debug
?????目錄??????????0??2008-11-21?09:57??bin
?????目錄??????????0??2008-11-21?10:09??obj
?????目錄??????????0??2008-11-21?09:57??Properties
-----------?---------??----------?-----??----
???????????????140058????????????????????26
- 上一篇:C# 編寫的員工管理信息系統
- 下一篇:asp.net 導入excel到數據庫中的
評論
共有 條評論