DataGridView DataSource // 整数转图标

DataGridView DataSource // integer to icon

我有一个运行速度非常慢的基于列表的应用程序,因为我的 DataGridView 中的每一行都是手动构建为 DataGridViewRow。为了解决性能问题,我决定改用 DataSource (DataTable)。

我的问题:

我从数据库中收到的一列中填满了图像 ID。应用程序知道哪个图像属于哪个 id。手动创建网格行时,将 int 转换为位图并将位图用作图像列的值没有问题。现在改用数据表我无法让它工作。为了测试,我写了以下 class:

Public Class test
Dim img As Bitmap

Public Sub New(image As Bitmap)
    InitializeComponent()
    Me.img = image
End Sub

Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click
    Dim dt As New DataTable
    dt.Columns.Add("StrCol")
    dt.Columns.Add("ImgCol")
    Dim row As DataRow = dt.NewRow
    row.Item(0) = "Ohne Bild"
    row.Item(1) = 0
    Dim row2 As DataRow = dt.NewRow
    row2.Item(0) = "Mit Bild"
    row2.Item(1) = 1
    dt.Rows.Add(row)
    dt.Rows.Add(row2)
    DataGridView1.DataSource = dt
End Sub

Private Sub DataGridView1_CellFormatting(sender As Object, e As DataGridViewCellFormattingEventArgs) Handles DataGridView1.CellFormatting
    If e.ColumnIndex = 1 Then
        If e.Value = 0 Then
            e.Value = Nothing
        Else
            e.Value = img
        End If
    End If
End Sub
End Class

提示:

Button1_Click() 后的输出


编辑

由于误解,我会尽力澄清我的问题;

所谓基于列表,我实际上并不是指列表对象。我的坏 there.By 基于列表我的意思是一个显示他创建的用户数据库条目的应用程序。我的应用程序的基础很简单:允许用户在数据网格视图中添加行、编辑和删除行。此信息在数据库中保存和编辑。行中的某些信息(确切地说是 2 列)显示为图标,而应用程序只是在数据库中为图标保存了一个 ID。所以应用程序知道哪个ID属于哪个图标。

问题中的示例 dt 只是为了有一些东西可以使用。在应用程序中,它将是从数据库接收到数据表的数据。

终于自己解决了

  1. 我从我的数据库中得到一个数据table。
  2. 然后我用数据类型位图向它添加一个列
  3. 然后我遍历 DataTable 的每一行并将 Image_ID 列转换为图像本身并将图像放入新列
  4. 然后我删除 Image_ID 列
  5. 然后我使用新的 DataTable 作为数据源

我在我的主应用程序中创建了该代码,它要复杂得多,所以我无法在此处显示代码。很抱歉,感谢您的帮助。

在使用 table 作为源之前,请务必完成您需要做的所有更改,因为一旦 gridView 必须更改显示的内容,就会花费更多时间。