C# 如何将图像动态添加到DataGridView(每行的特定列)

C# 如何将图像动态添加到DataGridView(每行的特定列),c#,.net,winforms,datagridview,C#,.net,Winforms,Datagridview,使用C#和Webforms,代码如下: DataGridViewImageColumn img = new DataGridViewImageColumn(); string path = "path" + file; Image image = Image.FromFile(path); img.Image = image; DataGridView.Columns.Add(img); img.HeaderText = "Picture"; img.Name = "picture"; 我的问

使用C#和Webforms,代码如下:

DataGridViewImageColumn img = new DataGridViewImageColumn();
string path = "path" + file;
Image image = Image.FromFile(path);
img.Image = image;
DataGridView.Columns.Add(img);
img.HeaderText = "Picture";
img.Name = "picture";
我的问题是下一个。此代码不起作用。。。DataGridview未显示图像。 当我调试这段代码时,路径是正确的,并且我在img元素中正确地加载了图像。更重要的是,当我使用多个图像时,DataGridView显示的列数与我添加的列数相同。但根本没有任何图像显示,我只能看到红十字会内典型的白色正方形

有什么问题?

您可以将图像添加到
单元格中,如下所示:

dataGridView1[yourColumn, yourRow].Value = Image.FromFile(path); 
当然,您可以使用任何其他图像源。。通过这种方式,您可以将不同的图像加载到每一行

注意:如果您真的只想在每个
行中添加相同的图像
,您可以在代码中这样做,但是您需要添加真实的


allowUserToAddress
处于启用状态时,它将显示在最后一行,但将显示在您添加的所有其他行上。

仅通过@TaW共享最终代码解决方案 有人问我:

private void dataGridView1_CellContentDoubleClick(object sender, DataGridViewCellEventArgs e)
        {
            codigo = int.Parse(dataGridView1.CurrentRow.Cells[0].Value.ToString());

            Piso formPiso = new Piso();

            var consultaPisoAlquiler = from piso in contexto.pisosAlquiler
                                       where piso.codigo == codigo
                                       select new
                                       {
                                           fotos = piso.fotos.Split(','),
                                           zona = piso.zona,
                                           mm = piso.mm,
                                           descripcion = piso.descripcion,
                                           precio = piso.precio,
                                           estado = piso.estado
                                       };

            formPiso.txtCodigo.Text = codigo.ToString();
            formPiso.txtDescripcion.Text = consultaPisoAlquiler.First().descripcion.ToString();
            formPiso.txtEstado.Text = consultaPisoAlquiler.First().estado.ToString();
            formPiso.txtMm.Text = consultaPisoAlquiler.First().mm.ToString();
            formPiso.txtPrecio.Text = consultaPisoAlquiler.First().precio.ToString();
            formPiso.txtZona.Text = consultaPisoAlquiler.First().zona.ToString();

            formPiso.DGVPisoFotos.AutoGenerateColumns = false;
            formPiso.DGVPisoFotos.Columns.Clear();
            DataGridViewImageColumn img = new DataGridViewImageColumn();
            img.Width = 230;
            img.HeaderText = "Fotos";
            formPiso.DGVPisoFotos.Columns.Add(img);
            int i = 0;
            foreach (var foto in consultaPisoAlquiler.First().fotos)
            {
                formPiso.DGVPisoFotos.Rows.Add();
                string path = "E:/WorkSpaces/MVS/ProyectoJoseph/" + foto;
                Bitmap image = (Bitmap)Image.FromFile(path);
                Bitmap imageRS = new Bitmap(image, new Size(230, 230));
                formPiso.DGVPisoFotos[0, i].Value = imageRS;
                formPiso.DGVPisoFotos.Rows[i].Height = 230;
                i++;
            }

            formPiso.ShowDialog();
}

谢谢你的快速回答。。。当我尝试这样做时,我在列中得到字符串“System.Drawing.Bitmap”。。。这是代码:int i=0;foreach(queryLINQ.First().arrayURLs中的var url){DataGridView.Rows.Add();string path=“E:/workspace/MVS/Proyect”+url;DataGridView[0,i].Value=Image.FromFile(path);i++;}你知道吗?这意味着你的索引是错误的!请注意,顺序是[列,行],而不是相反!!您确定imageColumn是第一个吗?或者您还没有添加imageColumn..嗯,因为它在这里工作得很好,我不知道。。如果我将该值设置为非ImageColumn值,我会得到相同的错误。您只能设置整行的高度,也只能按每行设置;由于您使用的是循环,因此可以直接在那里执行..:
dataGridView1.Rows[row].Height=((位图)(dataGridView1[col,row].FormattedValue)).Height还没有,因为这需要15次重复。但你可以这样做(这会让你得到2rep)…一旦你得到15个代表点,你可能会回来投票给那些迄今为止帮助过你的人。。