2012-04-03 42 views
6

Estoy intentando configurar un DataGridView en un formulario para que la fila debajo del mouse quede resaltada. Lo tengo trabajando con lo siguiente, excepto que la fila seleccionada actualmente no se resaltará en MouseEnter.Cambiar el color de fondo de la fila seleccionada en Datagridview en mouseover

Los formularios contienen 4 DataGridView por separado y la única fila que se resalta debe ser la que está debajo del cursor del mouse.

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 

La siguiente imagen es con el mouse sobre una fila aleatoria no seleccionada. El beige es el color más destacado que quiero mostrar.

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

Esta pic es con el puntero del ratón sobre la fila seleccionada actualmente. Quiero que el color de fondo cambie a BlanchedAlmond cuando el mouse esté sobre él.

Why you no highlight when I want.

Por lo tanto, he cambiado el pensamiento y la MouseEnter intentado utilizar para hacer que la fila de la seleccionada. Eso funciona genial Pero deja la fila seleccionada cuando el mouse sale de la cuadrícula de datos y se mueve a una diferente (mala). Traté de configurar el BackColor seleccionado para que coincida con BackColor no seleccionado y ahora no resalta en absoluto.

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 

Ayuda por favor :)

Respuesta

5

tengo que trabajar.

Estaba usando DefaultCellStyle en lugar de RowsDefaultCellStyle. Aquí está el código final.

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 
Cuestiones relacionadas