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
我得到了这个代码:
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