0

我有一个简单的数据表,我需要一列来包含图像的内容,以便我可以将其绑定到图片框以在数据转发器中使用。我的以下代码返回System.Drawing.Bitmap不是有效数据类型的错误,但我找不到那个错误。

Dim ListData As DataTable = New DataTable()
Dim FirstImageColumn As DataColumn = New DataColumn()
FirstImageColumn.DataType = System.Type.GetType("System.Drawing.Bitmap")
FirstImageColumn.ColumnName = "FirstImage"
ListData.Columns.Add(FirstImageColumn)
4

2 回答 2

1

我知道这是一个旧帖子。这个答案对我有用。

 Dim fileImg As Image = fileIcon.ToBitmap
 column = New DataColumn("Image", GetType(Bitmap))
                    DocumentsDT.Columns.Add(column)
 dr("Image") = fileImg
于 2015-05-01T20:42:12.057 回答
0

您不能将 DataColumn 的属性 DataType 设置为对象无法识别的类型。

属性 DataType的 MSDN 中,您可以阅读

DataType 属性支持以下基本 .NET Framework 数据类型:
Boolean、Byte、Char、DateTime、Decimal、Double、Guid、Int16、Int32、Int64、SByte、Single、String、TimeSpan、UInt16、UInt32、UInt64、Byte[]

要将图像存储在 DataTable 中,您需要将其 DataType 属性定义为byte[],然后您可以轻松找到将图像存储在该类型列中的代码

例如(未测试)

Dim ListData As DataTable = New DataTable()
Dim FirstImageColumn As DataColumn = New DataColumn()
FirstImageColumn.DataType = System.Type.GetType("System.Byte[]")
FirstImageColumn.ColumnName = "FirstImage"
ListData.Columns.Add(FirstImageColumn)
Dim img = Image.FromFile("....path to image file...")
Dim row = ListData.NewRow()
Dim ms = new MemoryStream()
img.Save(ms, System.Drawing.Imaging.ImageFormat.Gif)
row["FirstImage"] = ms.ToArray()
ListData.Rows.Add(row)
于 2013-10-05T19:53:04.337 回答