Vb.net DataGridView数据源//整数到图标
我有一个运行非常慢的基于列表的应用程序,因为DataGridView中的每一行都是作为DataGridViewRow手动构建的。为了解决性能问题,我决定改用数据源(DataTable) 我的问题是: 我从数据库收到的一列中充满了图像ID。应用程序知道哪个图像属于哪个id。手动创建网格行时,将int转换为位图并将位图用作imagecolumn的值没有问题。现在使用数据表,我无法让它工作。为了进行测试,我编写了以下类:Vb.net DataGridView数据源//整数到图标,vb.net,datagridview,bindingsource,Vb.net,Datagridview,Bindingsource,我有一个运行非常慢的基于列表的应用程序,因为DataGridView中的每一行都是作为DataGridViewRow手动构建的。为了解决性能问题,我决定改用数据源(DataTable) 我的问题是: 我从数据库收到的一列中充满了图像ID。应用程序知道哪个图像属于哪个id。手动创建网格行时,将int转换为位图并将位图用作imagecolumn的值没有问题。现在使用数据表,我无法让它工作。为了进行测试,我编写了以下类: Public Class test Dim img As Bitmap Pub
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
提示:
- “Ohne Bild”翻译成“没有图像”
- 《麻省理工学院图片报》翻译成“有图像”
编辑 由于误解,我将试图澄清我的问题 我所说的基于列表的,实际上并不是指列表对象。我的缺点是,基于列表的应用程序显示了他创建的用户数据库条目。我的应用程序非常简单:允许用户在datagridview中添加行、编辑和删除行。此信息在数据库中保存和编辑。行(确切地说是两列)中的一些信息显示为图标,而应用程序只是将图标的id保存在数据库中。因此,应用程序知道哪个ID属于哪个图标
问题中的示例dt只是为了处理一些东西。在应用程序中,它将是从数据库接收到数据表的数据。我最终自己解决了这个问题
在将表用作源之前,必须进行所需的所有更改,这一点很重要,因为一旦gridView必须更改所显示的内容,就会花费更多的时间 图像ID本身不会转换为图像。实际图像存储在哪里?@puropoix我没有为了好玩而尝试覆盖CellFormatting事件:-)正如您所见,图像/图标存储在构造函数中定义的实例成员中。