2012-04-03 73 views
6

我正在尝试在窗体上设置DataGridView,以便高亮显示鼠标下方的行。除了当前选定的行不会在MouseEnter上突出显示外,我已经完成了以下工作。在mouseover上更改datagridview中选定行的背景色

的形式包含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 

以下PIC是用鼠标在随机的非选择的行。米色是我想展示的高光颜色。

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

此PIC是用鼠标当前所选行上。当鼠标移过它时,我想让背景颜色变成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 

帮助请:)

回答

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 
相关问题