在鼠标悬停时更改datagridview中所选行的背景颜色

blu*_*xty 6 vb.net datagridview

我试图在窗体上设置DataGridView,以便突出显示鼠标下的行.除了当前选中的行不会在MouseEnter上突出显示之外,我已经使用了以下内容.

表单包含4个单独的DataGridView,唯一突出显示的行应该是鼠标光标下的行.

Private Sub dgvPrjDwgs_CellMouseEnter(sender As Object, e As System.Windows.Forms.DataGridViewCellEventArgs) Handles dgvPrjDwgs.CellMouseEnter
        If e.RowIndex > -1 Then
            dgvPrjDwgs.Rows(e.RowIndex).DefaultCellStyle.BackColor = Color.BlanchedAlmond
        End If
End Sub

Private Sub dgvPrjDwgs_CellMouseLeave(sender As Object, e As System.Windows.Forms.DataGridViewCellEventArgs) Handles dgvPrjDwgs.CellMouseLeave
        If e.RowIndex > -1 Then
            dgvPrjDwgs.Rows(e.RowIndex).DefaultCellStyle.BackColor = Color.DimGray
        End If
End Sub
Run Code Online (Sandbox Code Playgroud)

下面的图片是将鼠标放在随机的非选定行上.米色是我想展示的亮点颜色.

突出,突出,你这么好,你这么好,你让我大吃一惊!

该图片是鼠标悬停在当前选定的行上.当鼠标悬停在它上面时,我希望背景颜色变为BlanchedAlmond.

为什么你没有突出我想要的.

所以,我改变了想法,并尝试使用MouseEnter将该行设为选定的行.这很好用.但是当鼠标离开数据网格并移动到另一个(坏)时,它会选择行.我尝试将所选的BackColor设置为与未选择的BackColor匹配,现在它根本不突出显示.

Private Sub dgvPrjDwgs_CellMouseEnter(sender As Object, e As System.Windows.Forms.DataGridViewCellEventArgs) Handles dgvPrjDwgs.CellMouseEnter
    dgvPrjDwgs.DefaultCellStyle.SelectionBackColor = Color.BlanchedAlmond
    If e.RowIndex > -1 Then
        dgvPrjDwgs.Rows(e.RowIndex).Selected = True
    End If
End Sub
Private Sub dgvPrjDwgs_CellMouseLeave(sender As Object, e As System.Windows.Forms.DataGridViewCellEventArgs) Handles dgvPrjDwgs.CellMouseLeave
    dgvPrjDwgs.DefaultCellStyle.SelectionBackColor = Color.DimGray
End Sub
Run Code Online (Sandbox Code Playgroud)

请帮忙 :)

blu*_*xty 5

得到它的工作.

我使用的是DefaultCellStyle而不是RowsDefaultCellStyle.这是最终的代码.

Private Sub dgvPrjDwgs_CellMouseEnter(sender As Object, e As System.Windows.Forms.DataGridViewCellEventArgs) Handles dgvPrjDwgs.CellMouseEnter
        dgvPrjDwgs.RowsDefaultCellStyle.SelectionBackColor = Color.BlanchedAlmond
        If e.RowIndex > -1 Then
            dgvPrjDwgs.Rows(e.RowIndex).Selected = True
        End If
    End Sub
    Private Sub dgvPrjDwgs_CellMouseLeave(sender As Object, e As System.Windows.Forms.DataGridViewCellEventArgs) Handles dgvPrjDwgs.CellMouseLeave
        dgvPrjDwgs.RowsDefaultCellStyle.SelectionBackColor = Color.DimGray
    End Sub
Run Code Online (Sandbox Code Playgroud)