DataGridViewImageColumn не меняет значение - PullRequest
0 голосов
/ 02 октября 2019

Я пытаюсь изменить изображение ячейки внутри DataGridViewImageColumn, когда значение другой ячейки в порядке или НЕТ. Я создал столбец с этим кодом

Dim NewImageProd As New DataGridViewImageColumn
NewImageProd.Image = My.Resources.Smile1
NewImageProd.Name = "IMAGE"
NewImageProd.ImageLayout = DataGridViewImageCellLayout.Zoom
NewImageProd.DisplayIndex = 0
NewImageProd.Width = 70
DGDati.Columns.Add(NewImageProd)

Позже я сделал проверку с этим кодом

For Idx = 0 To DGDati.RowCount - 1
    Select Case DGDati("OTHERVALUE", Idx).Value.ToString
        Case "OK"
            DGDati.Rows(Idx).Cells("IMAGE").Value = My.Resources.Smile2
        Case "NO"
            DGDati.Rows(Idx).Cells("IMAGE").Value = My.Resources.Smile3
    End Select
Next
Call DGDati.RefreshEdit()

Но ничего не произошло. Что я делаю не так?

1 Ответ

0 голосов
/ 03 октября 2019

Используйте DataGridView.CellFormatting событие, которое происходит, когда содержимое ячейки необходимо отформатировать для отображения. При использовании этого события вам не нужно обновлять DataGridView или данные.

Private Sub DGDati_CellFormatting(ByVal sender As Object, ByVal e As System.Windows.Forms.DataGridViewCellFormattingEventArgs) Handles DGDati.CellFormatting

    If e.ColumnIndex = -1 Or e.RowIndex = -1 Then Exit Sub

    With Me.DGDati
        If .Columns(e.ColumnIndex).Name = "IMAGE" Then
            If .Rows(e.RowIndex).Cells("OTHER_VALUE").Value = "OK" Then
                e.Value = My.Resources.Smile2
            ElseIf .Rows(e.RowIndex).Cells("OTHER_VALUE").Value = "NO"
                e.Value = My.Resources.Smile3
            Else
                e.Value = My.Resources.Smile1
            End If
        End If
    End With

End Sub

Также следуйте советам в комментариях, чтобы никогда не использовать изображения из Resources подобным образом.

...