blu*_*xty 6 vb.net datagridview
我试图在窗体上设置DataGridView,以便突出显示鼠标下的行.除了当前选中的行不会在MouseEnter上突出显示之外,我已经使用了以下内容.
表单包含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
Run Code Online (Sandbox Code Playgroud)
下面的图片是将鼠标放在随机的非选定行上.米色是我想展示的亮点颜色.

该图片是鼠标悬停在当前选定的行上.当鼠标悬停在它上面时,我希望背景颜色变为BlanchedAlmond.

所以,我改变了想法,并尝试使用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
Run Code Online (Sandbox Code Playgroud)
请帮忙 :)
得到它的工作.
我使用的是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
Run Code Online (Sandbox Code Playgroud)