2

我必须将图像放到 datagridview 的特定列中,但不是在每一行中。

If getExists(myTable, CInt(reader.GetValue(0)), dbConn) Then
  .Cells("myCol").Value = Image.FromFile("C:\myPath\myIco_16x16.ico")
Else
  .Cells("myCol").Value = "" ' error here
End If

使用此代码,我在执行时遇到错误可能是因为我试图在图像列中放置一个字符串。第二个我尝试的是:

.Cells("myCol").Value = Nothing

这不会导致错误,而是将“错误图像”图片(带有红色 X)放到网格中。

这是一种在不从文件或资源加载“空白图像”的情况下将任何图像(空白)放入 datagridview 的图像列的方法吗?

4

3 回答 3

3

我过去不得不这样做,并且只使用了一个 1 像素的透明 PNG。即使有 18 个图像列和约 2000 行,我的应用程序的性能也是可以接受的,并且单元格的背景颜色可以很好地显示出来。

您应该能够使用诸如“Paint.Net”之类的免费程序相当容易地创建一个 1x1 像素的透明 PNG。

于 2012-12-16T03:26:22.917 回答
1

您可以只创建一个临时空白位图并将其分配给而不是从文件中加载图像。

Friend Function BlankImage() As Image
    Try
        Dim oBM As New Bitmap(1, 1)
        oBM.SetPixel(0, 0, Color.Transparent)
        Return oBM
    Catch ex As Exception
        Return Nothing
    End Try

End Function
于 2014-09-04T15:08:37.453 回答
0

可以提高性能的稍微好一点的方法:

Friend Function BlankImage() As Image
    Static oBM As New Bitmap(1, 1)
    Try

        If oBM Is Nothing Then
            oBM.SetPixel(0, 0, Color.Transparent)
        End If
        Return oBM
    Catch ex As Exception
        Return Nothing
    End Try

End Function
于 2018-02-14T21:50:48.583 回答