使数据库中的图像适合 DataGridView 单元格
Fit image from database to a DataGridView Cell
我正在使用带有 VB.net 的 VS-2012 开发桌面应用程序。
这是我的代码:
Dim constring As String = "connection_string"
Using con As New SqlConnection(constring)
Using cmd As New SqlCommand("SELECT * FROM tbl_product", con)
cmd.CommandType = CommandType.Text
Using sda As New SqlDataAdapter(cmd)
Using ds As New DataSet()
sda.Fill(ds)
DataGridView1.DataSource = ds.Tables(0)
End Using
End Using
End Using
End Using
图像显示当前输出:
如何显示适合单元格高度和宽度的图像?
我在设计模式中更改了行高 (DataGridView -> RowTemplate -> Height
)。
但是,不知道如何适配图片才能正常显示。
由于您的 DataGridView 绑定到 DataSource(因此您可能没有在 Design-Time 设置 Columns 属性),您必须在 Run-Time 验证 Cell 是否承载 Bitmap 对象。
一种可能的方法是订阅 CellPainting 事件,如果 Cell .ValueType
是位图类型,re-define Cell 行为,设置其 .ImageLayout
属性 到 Zoom
.
Private Sub DataGridView1_CellPainting(sender As Object, e As DataGridViewCellPaintingEventArgs) Handles DataGridView1.CellPainting
If (e.RowIndex < 0 Or e.ColumnIndex < 0) Then Return
If DataGridView1.Rows(e.RowIndex).Cells(e.ColumnIndex).ValueType = GetType(Bitmap) Then
CType(DataGridView1.Rows(e.RowIndex).Cells(e.ColumnIndex),
DataGridViewImageCell).ImageLayout = DataGridViewImageCellLayout.Zoom
End If
End Sub
更新:
图像作为字节数组存储在 SQL 数据库中。
因此,要识别图像托管单元,必须更改代码:
(...)
If DataGridView1.Rows(e.RowIndex).Cells(e.ColumnIndex).ValueType = GetType(Byte()) Then
(...)
我正在使用带有 VB.net 的 VS-2012 开发桌面应用程序。
这是我的代码:
Dim constring As String = "connection_string"
Using con As New SqlConnection(constring)
Using cmd As New SqlCommand("SELECT * FROM tbl_product", con)
cmd.CommandType = CommandType.Text
Using sda As New SqlDataAdapter(cmd)
Using ds As New DataSet()
sda.Fill(ds)
DataGridView1.DataSource = ds.Tables(0)
End Using
End Using
End Using
End Using
图像显示当前输出:
如何显示适合单元格高度和宽度的图像?
我在设计模式中更改了行高 (DataGridView -> RowTemplate -> Height
)。
但是,不知道如何适配图片才能正常显示。
由于您的 DataGridView 绑定到 DataSource(因此您可能没有在 Design-Time 设置 Columns 属性),您必须在 Run-Time 验证 Cell 是否承载 Bitmap 对象。
一种可能的方法是订阅 CellPainting 事件,如果 Cell .ValueType
是位图类型,re-define Cell 行为,设置其 .ImageLayout
属性 到 Zoom
.
Private Sub DataGridView1_CellPainting(sender As Object, e As DataGridViewCellPaintingEventArgs) Handles DataGridView1.CellPainting
If (e.RowIndex < 0 Or e.ColumnIndex < 0) Then Return
If DataGridView1.Rows(e.RowIndex).Cells(e.ColumnIndex).ValueType = GetType(Bitmap) Then
CType(DataGridView1.Rows(e.RowIndex).Cells(e.ColumnIndex),
DataGridViewImageCell).ImageLayout = DataGridViewImageCellLayout.Zoom
End If
End Sub
更新:
图像作为字节数组存储在 SQL 数据库中。
因此,要识别图像托管单元,必须更改代码:
(...)
If DataGridView1.Rows(e.RowIndex).Cells(e.ColumnIndex).ValueType = GetType(Byte()) Then
(...)