2012-04-03 4 views
6

Я пытаюсь настроить DataGridView на форме, чтобы подсвечивать строку под мышью. У меня это работает со следующим, за исключением того, что выбранная строка не выделяется MouseEnter.Изменение обратного цвета выбранной строки в datagridview на mouseover

Формы содержат 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 

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

ответ

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 
Смежные вопросы