2012-04-03 10 views
6

Próbuję skonfigurować DataGridView w formularzu tak, aby pod wierszem myszy był podświetlony wiersz. Mam to działa z następującymi, z wyjątkiem aktualnie zaznaczonego wiersza nie podświetl na MouseEnter.Zmiana koloru tła dla wybranego wiersza w widoku datagrid na mouseover

Formularze zawierają 4 osobne DataGridView, a jedyny podświetlony wiersz powinien znajdować się pod kursorem myszy.

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 

Poniżej rys dotyczy myszy na losowym nieselektywnej rzędu. Beżowy to kolor podświetlenia, który chcę pokazać.

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

ten rys dotyczy myszy w ciągu wybranego rzędu. Chcę, aby backcolor zmienił się na BlanchedAlmond, gdy mysz jest nad nim.

Why you no highlight when I want.

Więc zmieniłem myślenie i próbował za pomocą MouseEnter aby ten wiersz wybrany jeden. To działa świetnie. Ale pozostawia wiersz wybrany, gdy mysz opuszcza datagrid i przenosi się do innego (złego). Próbowałem ustawić wybrany kolor BackColor, aby pasował do niewybranego BackColor, a teraz nie jest w ogóle zaznaczony.

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 

pomóc proszę :)

Odpowiedz

5

Got go do pracy.

Używam DefaultCellStyle zamiast RowsDefaultCellStyle. Oto ostateczny kod.

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 
Powiązane problemy