2011-06-11 81 views
4

我想在dataGridView中显示一些图像。我有两个组件,dataGridView,dataTable和一个位图。 DataTable有两列。在dataGridView中使用C显示位图

dataGridview.source = dataTable; 

现在,我想的dataGridView显示三列,两名来自DataTable,并将新的第三个与我的位图。如果更容易,我可以修改dataTable和dataGridView。

可以吗?

回答

3

有几种方法可以解决这个问题。

DataGridView有一个图像列类型DataGridViewImageColumn,它具有可以传递位图的图像属性。

类似下面应该工作:

private void createGraphicsColumn(Bitmap image) 
{ 
    DataGridViewImageColumn imageColumn = new DataGridViewImageColumn(); 
    imageColumn.Image = image; 
    imageColumn.Name = "Tree"; 
    imageColumn.HeaderText = "Nice tree"; 
    dataGridView1.Columns.Insert(2, imageColumn); 
} 

如果需要,您还可以设置单个细胞的Value属性在此列。

上面的例子加上大量的其他讨论可以在MSDN找到。


另一种选择是将图片上传到数据表 - 这将自动生成图像列,但在数据表中需要新列的类型为字节数组。

我发现下面的代码快速谷歌这样做:

public byte[] imageToByteArray(System.Drawing.Image imageIn) 
{ 
    MemoryStream ms = new MemoryStream(); 
    imageIn.Save(ms,System.Drawing.Imaging.ImageFormat.Gif); 
    return ms.ToArray(); 
} 

如果你采取这种方法,我建议做一点点研究,以找到创建字节数组的最佳方法 - 我不能担保该代码是最好的。

+0

非常感谢帮助添加图片到它

dtMain.Columns.Add("ImageColumn", typeof(Image)); dtMain.Rows.Add(Image.FromFile(photopath + "1.jpg")); 

下载完整的代码,我想,现在我就可以完成这个问题。 :) – nirmus 2011-06-11 17:23:33