在特定单元格datagridview中显示图像c#

时间:2012-01-24 09:48:42

标签: c# .net winforms image datagridview

         string fileName = "C:\\Users\\Shahid\\Pictures\\Picasa\\word.gif";
        FileInfo fileInfo = new FileInfo(fileName);

        byte[] binaryData = File.ReadAllBytes(fileName);  
        MemoryStream ms = new MemoryStream(binaryData);
        Image returnImage = Image.FromStream(ms, false, true);
        dataGridView1.Rows[i].Cells[2].Value = returnImage;
        dataGridView1.Rows[i].Cells[2].ToolTipText = fileInfo.ToString();

在我的DataGridViewCell中显示“System.Drawing.Bitmap”而不是图像。

更新我!

2 个答案:

答案 0 :(得分:3)

要渲染图像,您必须使用DataGridViewImageColumn列。您还可以使用CellPainting事件在每个或特定单元格上绘制/绘制图像/绘图。

 private void dataGridView1_CellPainting(object sender, DataGridViewCellPaintingEventArgs e)
 {
   if (e.RowIndex==1 && e.ColumnIndex==1)
   {
    using (Image img = Image.FromFile(@"c:\file\file.gif"))
     {
       e.Graphics.DrawImage(img, e.CellBounds.Left, e.CellBounds.Top - 1, e.CellBounds.Right, e.CellBounds.Bottom - 1);

       e.PaintContent(e.ClipBounds);
       e.Handled = true;
      }
    }
 }

答案 1 :(得分:0)

如果图片将位于特定列中,请将该列的列类型从DataGridViewTextBoxColumn更改为DateGridViewImageColumn。然后从资源或文件夹加载图像。但如果没有图像,它将显示带有“X”的矩形。因此,请确保将图像添加为null。

但如果列未修复,则可以使用CellPainting事件。