我想在datagridview中显示一些图像。我有两个组件,datagridview、datatable和一个位图。datatable有两列。
dataGridview.source = dataTable;
现在,我想在datagridview中显示三列,其中两列来自datatable,第三列来自我的位图。如果更简单,我可以修改datatable和datagridview。
有可能吗?
最佳答案
有几种方法可以解决这个问题。
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);
}
如果需要,还可以设置此列中单个单元格的值属性。
上面的例子加上许多其他的讨论可以在MSDN上找到。
另一个选项是将图像添加到数据表中-这将自动生成图像列,但数据表中的新列必须是byte array类型。
我在google上找到了以下代码:
public byte[] imageToByteArray(System.Drawing.Image imageIn)
{
MemoryStream ms = new MemoryStream();
imageIn.Save(ms,System.Drawing.Imaging.ImageFormat.Gif);
return ms.ToArray();
}
如果你真的采用这种方法,我建议你做一点研究,找出创建字节数组的最佳方法——我不能保证代码是最好的。