簡體   English   中英

DataGridViewImageColumn 不會改變值

[英]DataGridViewImageColumn doesn't change value

當另一個單元格的值為 OK 或 NO 時,我正在嘗試更改 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()

但什么也沒有發生。 我究竟做錯了什么?

使用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中的圖像。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM