VB.NET:将datagridview中的文本列转换为图像列,并根据文本设置图标

VB.NET:将datagridview中的文本列转换为图像列,并根据文本设置图标,vb.net,replace,datagridview,icons,Vb.net,Replace,Datagridview,Icons,在VB.net中,我有一个datagridview,它显示了数据库查询的一些结果。为了生成它,我执行了一些sql查询并将数据写入一个datatable。然后将此表链接到dgview dg_data.DataSource = SqlData.DefaultView 现在,一列可以包含某些(固定的和预定义的)字符,这些字符描述我的应用程序处理的事件的特定状态。我想用更直观的图标替换这些字符 我设法让它工作,但只在一个新的进一步列(12)中,根据另一列(11)代码字符包含一个图像。但是,我想用该字符

在VB.net中,我有一个datagridview,它显示了数据库查询的一些结果。为了生成它,我执行了一些sql查询并将数据写入一个datatable。然后将此表链接到dgview

dg_data.DataSource = SqlData.DefaultView
现在,一列可以包含某些(固定的和预定义的)字符,这些字符描述我的应用程序处理的事件的特定状态。我想用更直观的图标替换这些字符

我设法让它工作,但只在一个新的进一步列(12)中,根据另一列(11)代码字符包含一个图像。但是,我想用该字符替换列,并且只显示图像。这就是我所拥有的:

    'Add new image column:
            Dim imgcol As New DataGridViewImageColumn()
            dg_data.Columns.Add(imgcol)
            imgcol.HeaderText = "Status"
            imgcol.Name = "img"
            imgcol.DataPropertyName = "img"
            With dg_data
                .Columns("img").DisplayIndex = 12
                .Columns("img").Width = 20
            End With

' Load images from Resources    
            Dim report_filed As Image = My.Resources.report_filed
            Dim report_due As Image = My.Resources.noreport
            Dim attention As Image = My.Resources.attention
    
' Assign correct icon for certain character in status column (example for "!")
            For i As Integer = 0 To SqlData.Rows.Count - 1
                If dg_data.Rows(i).Cells(11).Value.ToString = "!" Then
                    dg_data.Rows(i).Cells("img").Value = My.Resources.attention
                Else
                    dg_data.Rows(i).Cells("img").Value = My.Resources.report_filed
                End If
            Next i
我们可以在使用后丢弃第11列

  dg_data.Columns(11).Visible = False
但我在这里寻找一个更优雅的解决方案,例如

Convert column 11 from to to img, replace "!" with image a, "c" with image "b" and so on.

有什么提示吗?提前谢谢

首先,不要在代码中添加图像列。将其添加到设计器中。是使用组合框列执行此操作的示例。原理与图像列完全相同,只是更改了一些细节。首先,不要在代码中添加图像列。将其添加到设计器中。是使用组合框列执行此操作的示例。原理与图像列完全相同,只是更改了一些细节。