Изменить задний цвет выбранной строки в сетке данных при наведении курсора мыши - PullRequest
6 голосов
/ 03 апреля 2012

Я пытаюсь настроить 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!

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

Why you no highlight when I want.

Итак, я передумал и попытался использовать 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

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

1 Ответ

5 голосов
/ 03 апреля 2012

Получил это на работу.

Я использовал 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
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...