2012-04-03 39 views
6

Tôi đang cố thiết lập DataGridView trên biểu mẫu sao cho hàng dưới con chuột được tô sáng. Tôi đã có làm việc với những điều sau đây, ngoại trừ hàng hiện đang được chọn sẽ không làm nổi bật trên MouseEnter.Thay đổi backcolor của hàng đã chọn trong datagridview khi di chuột qua

Biểu mẫu có 4 DataGridView riêng biệt và hàng duy nhất được đánh dấu là hàng duy nhất bên dưới con trỏ chuột.

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 

Hình sau đây là di chuột qua hàng không được chọn ngẫu nhiên. Màu be là màu nổi bật mà tôi muốn hiển thị.

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

Pic này bằng chuột qua hàng hiện được chọn. Tôi muốn backcolor thay đổi thành BlanchedAlmond khi con chuột kết thúc.

Why you no highlight when I want.

Vì vậy, tôi đã thay đổi suy nghĩ và cố gắng sử dụng các MouseEnter để làm điều đó hàng lựa chọn. Điều đó hoạt động rất tốt. Nhưng nó rời khỏi hàng được chọn khi con chuột rời khỏi DataGrid và di chuyển đến một cái khác (xấu). Tôi đã thử thiết lập BackColor đã chọn để phù hợp với BackColor không được chọn và bây giờ nó không nổi bật chút nào.

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 

Xin giúp :)

Trả lời

5

Got nó để làm việc.

Tôi đã sử dụng DefaultCellStyle thay vì RowsDefaultCellStyle. Đây là mã cuối cùng.

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 
Các vấn đề liên quan