VB 排序时行背景颜色重置 table

VB Row Backcolor resets when sorting table

我得到了这个代码:

    Private Sub ColorRows()
    For Each row As DataGridViewRow In DataGridView1.Rows
        If (Not row.IsNewRow) And (row.Cells("Done").Value IsNot DBNull.Value) Then
            row.DefaultCellStyle.BackColor = Color.PaleGreen
        End If
    Next
    For Each row As DataGridViewRow In DataGridView1.Rows
        If (Not row.IsNewRow) And (row.Cells("Note").Value IsNot DBNull.Value) And (row.Cells("Done").Value Is DBNull.Value) Then
            row.DefaultCellStyle.BackColor = Color.NavajoWhite
        End If
    Next
End Sub

但是当我想对列进行排序时,它会重置回白色 - 所以我不能例如按完成列排序,同时查看绿色(完成)行和未完成行。

谢谢。

我假设您想通过单击 dgv 中的排序功能对行进行排序。此外,在排序时,您希望保留基于列单元格值的颜色定义。 即,如果值为 Done,则为绿色,如果值为 Note,则为白色

假设您的 dgv 名称是 dgvResult 这是代码
调用排序的鼠标点击事件

Private Sub dgvResult_ColumnHeaderMouseClick(ByVal sender As Object, ByVal e As 
System.Windows.Forms.DataGridViewCellMouseEventArgs) Handles   
dgvResult.ColumnHeaderMouseClick
    Sort()
End Sub

做背景颜色的代码

Private Sub Sort()

        For i = 0 To dgvResult.RowCount - 1

            With dgvResult
                If .Item(0, i).Value = "Done" Then
                    .Rows(i).DefaultCellStyle.BackColor = Color.PaleGreen
                End If

                If .Item(0, i).Value = "Note" Then
                    .Rows(i).DefaultCellStyle.BackColor = Color.WhiteSmoke
                End If
            End With

        Next

    End Sub