C# 在DataGridView单元格中显示来自web的图像
我有一个绑定列表和链接到DataGridView的源 当我向绑定列表中添加一个项目时,我希望在单元格中显示该图像(来自web)。这可能吗 这就是我目前所拥有的,我能够从web加载图像,但我不知道如何在第一列的DataGridView行中显示它:C# 在DataGridView单元格中显示来自web的图像,c#,datagridview,C#,Datagridview,我有一个绑定列表和链接到DataGridView的源 当我向绑定列表中添加一个项目时,我希望在单元格中显示该图像(来自web)。这可能吗 这就是我目前所拥有的,我能够从web加载图像,但我不知道如何在第一列的DataGridView行中显示它: public partial class Form1 : Form { static BindingList<VideoInfo> searchResults = new BindingList<VideoInfo>();
public partial class Form1 : Form
{
static BindingList<VideoInfo> searchResults = new BindingList<VideoInfo>();
BindingSource bindingSearchResults = new BindingSource()
{
DataSource = searchResults
};
public Form1()
{
InitializeComponent();
}
private void Form1_Load(object sender, EventArgs e)
{
resultGrid.DataSource = bindingSearchResults;
}
private void button1_Click(object sender, EventArgs e)
{
searchResults.Add(new VideoInfo()
{
Thumbnail = DownloadImage("http://i.ytimg.com/vi/uJbDSPRqX0o/mqdefault.jpg"),
Title = "Man's Best Friend - Cyanide & Happiness Shorts",
Url = "http://www.youtube.com/watch?v=uJbDSPRqX0o "
});
}
private Image DownloadImage(string imageUrl)
{
try
{
WebRequest req = WebRequest.Create(imageUrl);
return Image.FromStream(req.GetResponse().GetResponseStream());
}
catch { }
return new Bitmap(1, 1);
}
}
public struct VideoInfo
{
public Image Thumbnail { get; set; }
public string Title { get; set; }
public string Url { get; set; }
}
公共部分类表单1:表单
{
静态BindingList searchResults=新建BindingList();
BindingSource bindingSearchResults=新BindingSource()
{
数据源=搜索结果
};
公共表格1()
{
初始化组件();
}
私有void Form1\u加载(对象发送方、事件参数e)
{
resultGrid.DataSource=bindingSearchResults;
}
私有无效按钮1\u单击(对象发送者,事件参数e)
{
searchResults.Add(新的VideoInfo()
{
缩略图=下载图像(“http://i.ytimg.com/vi/uJbDSPRqX0o/mqdefault.jpg"),
Title=“男人最好的朋友-氰化物和幸福短裤”,
Url=”http://www.youtube.com/watch?v=uJbDSPRqX0o "
});
}
私有映像下载映像(字符串imageUrl)
{
尝试
{
WebRequest req=WebRequest.Create(imageUrl);
返回Image.FromStream(req.GetResponse().GetResponseStream());
}
捕获{}
返回新位图(1,1);
}
}
公共结构视频信息
{
公共图像缩略图{get;set;}
公共字符串标题{get;set;}
公共字符串Url{get;set;}
}
您的代码在这里运行得非常好,至少在按钮点击连接好的情况下是如此
您可能需要添加一行或两行以调整缩略图单元格的高度:
int maxWidth = -1;
foreach (DataGridViewRow row in resultGrid.Rows)
{
Size imgSize = ((Image)row.Cells[0].FormattedValue).Size;
row.Height = imgSize.Height;
if (imgSize.Width > maxWidth) maxWidth = imgSize.Width;
resultGrid.Columns[0].Width = maxWidth;
}
当然,如果您知道所有缩略图的大小都是固定的,您可以提前这样做。问题解决了吗?