使图像适合datagridview单元格 - vb.net

时间:2018-03-11 04:21:44

标签: vb.net datagridview bitmap datasource

我正在使用带有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

图像显示当前输出。 enter image description here

但是,如何显示符合单元格高度和宽度的图像?
我在设计模式下更改了行高(datagridview property-> row template - > height)。
但是,不知道如何使图像适合显示它。

enter image description here

1 个答案:

答案 0 :(得分:1)

由于DataGridView绑定到DataSource(因此您可能未在设计时设置Columns属性),因此必须在运行时验证Cell是否正在托管Bitmap对象。

一种可能的方法是订阅CellPainting事件,如果Cell .ValueType是Type Bitmap,则重新定义Cell行为,将其.ImageLayout属性设置为{{1 }}。

Zoom

<强>更新
Image作为字节数组存储在SQL数据库中 因此,为了识别图像托管单元,必须改变代码:

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