我想在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();
}

如果你真的采用这种方法,我建议你做一点研究,找出创建字节数组的最佳方法——我不能保证代码是最好的。

10-02 03:12