Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/logging/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/oop/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 在DataGridView单元格中显示来自web的图像_C#_Datagridview - Fatal编程技术网

C# 在DataGridView单元格中显示来自web的图像

C# 在DataGridView单元格中显示来自web的图像,c#,datagridview,C#,Datagridview,我有一个绑定列表和链接到DataGridView的源 当我向绑定列表中添加一个项目时,我希望在单元格中显示该图像(来自web)。这可能吗 这就是我目前所拥有的,我能够从web加载图像,但我不知道如何在第一列的DataGridView行中显示它: public partial class Form1 : Form { static BindingList<VideoInfo> searchResults = new BindingList<VideoInfo>();

我有一个绑定列表和链接到DataGridView的源

当我向绑定列表中添加一个项目时,我希望在单元格中显示该图像(来自web)。这可能吗

这就是我目前所拥有的,我能够从web加载图像,但我不知道如何在第一列的DataGridView行中显示它:

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;
}

当然,如果您知道所有缩略图的大小都是固定的,您可以提前这样做。

问题解决了吗?