2012-04-03 20 views
6

Sto tentando di impostare un DataGridView su un modulo in modo che la riga sotto il mouse sia evidenziata. Ho funzionato con il seguente, tranne che la riga attualmente selezionata non verrà evidenziata in MouseEnter.Cambia il backcolor della riga selezionata in datagridview al passaggio del mouse

I moduli contiene 4 DataGridView separati e l'unica riga evidenziata deve essere quella sotto il cursore 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 

L'immagine seguente è con il mouse su una riga casuale non selezionata. Il beige è il colore di evidenziazione che voglio mostrare.

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

Questo pic è con il mouse sopra la riga selezionata. Voglio che il backcolor cambi in BlanchedAlmond quando il mouse è sopra di esso.

Why you no highlight when I want.

Così, ho cambiato il pensiero e provato ad utilizzare il MouseEnter per fare quella riga quello selezionato. Funziona alla grande. Ma lascia la riga selezionata quando il mouse lascia il datagrid e passa a uno diverso (cattivo). Ho provato a impostare il BackColor selezionato per abbinare il BackColor non selezionato e ora non evidenzia affatto.

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 

Help Please :)

risposta

5

Got a farlo funzionare.

Stavo usando DefaultCellStyle invece di RowsDefaultCellStyle. Ecco il codice finale.

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 
Problemi correlati