Изменение цвета выделенной строки в 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

следующий рисунок с помощью мыши над случайной не выбранной строки. Бежевый-это цвет я хочу показывать.

Highlight, highlight, you so fine, you so fine you blow my mind!

это изображение с помощью мыши над текущей выбранной строки. Я хочу, чтобы backcolor изменился на BlanchedAlmond, когда мышь над ним.

Why you no highlight when I want.

Итак, я изменил мышление и попытался использовать MouseEnter, чтобы сделать эту строку выбранной. Отлично работает. Но он оставляет строку выбранной, когда мышь покидает datagrid и переходит к другой (плохой). Я попытался установить выбранный 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

Помогите Пожалуйста :)

1 ответов


заставил его работать.

я использовал 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