首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >DataGridViewImageColumn不会更改值

DataGridViewImageColumn不会更改值
EN

Stack Overflow用户
提问于 2019-10-02 18:51:27
回答 1查看 49关注 0票数 0

当另一个单元格的值为OK或NO时,我尝试在DataGridViewImageColumn中更改另一个单元格的图像。我用下面的代码创建了这个列

代码语言:javascript
复制
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)

稍后,我用下面的代码做了检查

代码语言:javascript
复制
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()

但是什么也没发生。我做错了什么?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2019-10-03 23:58:09

使用当单元格的内容需要格式化以进行显示时发生的DataGridView.CellFormatting事件。使用此事件,您不需要刷新DataGridView或数据。

代码语言:javascript
复制
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的图像。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/58200004

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档